當前位置:編程學習大全網 - 源碼下載 - java線程池有哪些

java線程池有哪些

壹:newCachedThreadPool

(1)緩存型池子,先查看池中有沒有以前建立的線程,如果有,就reuse,如果沒有,就建立壹個新的線程加入池中;

(2)緩存型池子,通常用於執行壹些生存周期很短的異步型任務;因此壹些面向連接的daemon型server中用得不多;

(3)能reuse的線程,必須是timeout IDLE內的池中線程,缺省timeout是60s,超過這個IDLE時長,線程實例將被終止及移出池。

(4)註意,放入CachedThreadPool的線程不必擔心其結束,超過TIMEOUT不活動,其會自動被終止

二:newFixedThreadPool

(1)newFixedThreadPool與cacheThreadPool差不多,也是能reuse就用,但不能隨時建新的線程

(2)其獨特之處:任意時間點,最多只能有固定數目的活動線程存在,此時如果有新的線程要建立,只能放在另外的隊列中等待,直到當前的線程中某個線程終止直接被移出池子

(3)和cacheThreadPool不同,FixedThreadPool沒有IDLE機制(可能也有,但既然文檔沒提,肯定非常長,類似依賴上層的TCP或UDP IDLE機制之類的),所以FixedThreadPool多數針對壹些很穩定很固定的正規並發線程,多用於服務器

(4)從方法的源代碼看,cache池和fixed 池調用的是同壹個底層池,只不過參數不同:

fixed池線程數固定,並且是0秒IDLE(無IDLE)

cache池線程數支持0-Integer.MAX_VALUE(顯然完全沒考慮主機的資源承受能力),60秒IDLE

三:ScheduledThreadPool

(1)調度型線程池

(2)這個池子裏的線程可以按schedule依次delay執行,或周期執行

四:SingleThreadExecutor

(1)單例線程,任意時間池中只能有壹個線程

(2)用的是和cache池和fixed池相同的底層池,但線程數目是1-1,0秒IDLE(無IDLE)

  • 上一篇:有沒有什麽事情是電腦壹定要做而手機不能做的?
  • 下一篇:如何使用 Oracle Linux 中的硬件故障管理
  • copyright 2024編程學習大全網