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

sb.append(line)加上去之后,明显变得非常卡,并且CPU占用率特别高?为什么

sb.append(line)加上去之后,明显变得非常卡,并且CPU占用率特别高?为什么

临摹微笑 2023-05-03 10:06:48
假设我需要通过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 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

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

查看完整回答
反对 回复 2023-05-06
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

参考代码如下:

InputStream is = null;try {
    ...    is = p.getInputStream();    String text = IOUtils.toString(is, "GBK");    this.jTextArea1.append(text);
} catch (...) {
    ...
} finally {
    IOUtils.closeQuietly(is)
}
查看完整回答
反对 回复 2023-05-06
  • 2 回答
  • 0 关注
  • 100 浏览

添加回答

举报

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