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

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

空閑固定線程池的缺點

空閑固定線程池的缺點

函數式編程 2023-04-19 16:36:01
我目前正在對軟件進行各種性能改進。因為它使用 SWT 作為它的 GUI,所以我遇到了一個問題,在某些情況下,在顯示線程中創建了很多 UI 元素。由于我之前的人并沒有真正注意在顯示線程之外進行任何計算,因此整個軟件在啟動時可能會無響應幾秒鐘。我現在已經隔離了需要在 Display Thread 中執行的代碼,現在我正在計算 Runnables 中提交給固定 Threadpool 的所有其他內容。我正在像這樣使用游泳池:public abstract class AbstractChartComposite {private static ExecutorService pool = Executors.newFixedThreadPool(8);private List<String> currentlyProcessingChartItems = new ArrayList<>();protected void doCalculate(constraints){for (IMERuntimeConstraint c : constraints) {    if(!currentlyProcessingChartItems.contains(c.getId())){        currentlyProcessingChartItems.add(c.getId());        pool.submit(new Runnable(){            @Override            public void run() {                try{                  createChartItem(c);                currentlyProcessingChartItems.remove(c.getId());                }catch(Throwable e){                    e.printStackTrace();                }            }        });    }  }}}我現在想知道,一旦創建了所有 UI 元素,讓線程池閑置運行是否有任何缺點。我不能真正關閉它以進行垃圾回收,因為當需要創建新元素時,用戶輸入將再次需要它。那么在沒有提交的 Runnables 運行的情況下留下線程池有什么主要缺點嗎?
查看完整描述

1 回答

?
達令說

TA貢獻1821條經驗 獲得超6個贊

不,沒有缺點。

線程不會真正運行,它們將被停放,直到提交新任務。所以它不影響CPU。你還說你會再次使用這個池,所以在你的情況下沒有必要關閉它并再次重新創建。

至于內存 - 是的,空閑線程會消耗一些內存,但這也不是問題,直到你有數百(數千?)線程。

另外,一個建議。不要做過早的優化。那是萬惡之源。一旦遇到真正的性能問題,就可以使用特殊實用程序分析問題并檢測瓶頸。


查看完整回答
反對 回復 2023-04-19
  • 1 回答
  • 0 關注
  • 165 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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