为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

交互式爱情 2019-03-12 17:14:23
假设我需要通过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占用率特别高。这是为什么呢?
查看完整描述

2 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

你这里面while(line != null) 可能跳不出来,他会一直是true。你试试看是不是这个问题?


查看完整回答
反对 回复 2019-04-15
  • 2 回答
  • 0 关注
  • 929 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信