java 執行緒池

neil_發表於2018-06-22

new Thread的弊端如下:

  • 每次new Thread新建物件效能差。
  • 執行緒缺乏統一管理,可能無限制新建執行緒,相互之間競爭,及可能佔用過多系統資源導致當機或oom。
  • 缺乏更多功能,如定時執行、定期執行、執行緒中斷。

相比new Thread,Java提供的四種執行緒池的好處在於:

  • 重用存在的執行緒,減少物件建立、消亡的開銷,效能佳。
  • 可有效控制最大併發執行緒數,提高系統資源的使用率,同時避免過多資源競爭,避免堵塞。
  • 提供定時執行、定期執行、單執行緒、併發數控制等功能。

Java 執行緒池

Java通過Executors提供四種執行緒池,分別為:

  • newCachedThreadPool建立一個可快取執行緒池,如果執行緒池長度超過處理需要,可靈活回收空閒執行緒,若無可回收,則新建執行緒。
  • newFixedThreadPool 建立一個定長執行緒池,可控制執行緒最大併發數,超出的執行緒會在佇列中等待。
  • newScheduledThreadPool 建立一個定長執行緒池,支援定時及週期性任務執行。
  • newSingleThreadExecutor 建立一個單執行緒化的執行緒池,它只會用唯一的工作執行緒來執行任務,保證所有任務按照指定順序(FIFO, LIFO, 優先順序)執行。

相關文章