猿问

Java Process, InputStream读取字符串放入StringBuilder很卡的问题

假设我需要通过Process来执行一个进程,并且需要把进程写入InputStream里面的东西进行读取并分析,并且假设这个进程会产生很多的字符串输出。假定这个进程是curl。


以下代码:


try {

        // TODO add your handling code here:

        StringBuilder sb = new StringBuilder();

        ProcessBuilder pb = new ProcessBuilder("curl","http://www.sina.com.cn");    

        Process p = pb.start();

        InputStream is = p.getInputStream();

        BufferedReader reader = new BufferedReader(new InputStreamReader(is),4096);

        String line = reader.readLine();

        while(line != null){

            //sb.append(line);

            line = reader.readLine();

        }

        this.jTextArea1.append(sb.toString());

    } catch (IOException ex) {

            Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);

    }

在速度上似乎没问题,但是将sb.append(line)加上去之后,明显变得非常卡,并且CPU占用率特别高。这是为什么呢?


交互式爱情
浏览 930回答 2
2回答

MMMHUHU

你这里面while(line != null) 可能跳不出来,他会一直是true。你试试看是不是这个问题?
随时随地看视频慕课网APP

相关分类

Java
我要回答