亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

sb.append(line)加上去之后,明顯變得非常卡,并且CPU占用率特別高?為什么

sb.append(line)加上去之后,明顯變得非??ǎ⑶褻PU占用率特別高?為什么

臨摹微笑 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)加上去之后,明顯變得非??ǎ⑶褻PU占用率特別高。這是為什么呢?
查看完整描述

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 關注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號