java執行緒池簡單介紹以及適用場景

2021-09-17 00:06:10 字數 602 閱讀 4099

newfixedthreadpool(int nthads)

newsinglethreadexecutor()

newcachedthreadpool()

newscheduledthreadpool(int corepoolsize)

1)fixedthreadpool和 singlethreadpool: 允許的請求佇列長度為 integer.max_value,可能會堆積大量的請求,從而導致 oom。

2)cachedthreadpool和 scheduledthreadpool:

允許的建立執行緒數量為 integer.max_value,可能會建立大量的執行緒,從而導致 oom

對於不同性質的任務來說,cpu密集型任務應配置盡可能小的執行緒,如配置cpu個數+1的執行緒數,io密集型任務應配置盡可能多的執行緒,因為io操作不占用cpu,不要讓cpu閒下來,應加大執行緒數量,如配置兩倍cpu個數+1,而對於混合型的任務,如果可以拆分,拆分成io密集型和cpu密集型分別處理,前提是兩者執行的時間是差不多的,如果處理時間相差很大,則沒必要拆分了。

原則:執行緒等待時間所佔比例越高,需要越多執行緒。執行緒cpu時間所佔比例越高,需要越少執行緒。

執行緒池簡單介紹

執行緒池 1 fixedthreadpool 可重用固定執行緒數的執行緒池 2 singlethreadexecutor 單個worker執行緒的executor 3 cachedthreadpool 根據需要建立執行緒的執行緒池 corepoolsize為0,maximumpoolsize是無界的...

java執行緒池介紹 一

scheduledthreadpoo實現定時任務 class temp extends thread public class scheduledjob 使用有界佇列時,若有新的任務需要執行,如果執行緒池實際執行緒數小於corepoolsize,則會優先建立執行緒,若大於corepoolsize,則...

執行緒池介紹

1.定義 執行緒池是一種多執行緒處理形式,處理過程中將任務新增 到佇列,然後在建立執行緒後自動啟動這些任務。2.作用 執行緒池的作用是限制系統中執行執行緒的數量。根據系統的環境情況,可以手動或是自動設定執行緒數量,達到執行的最佳效果。既不會浪費系統資源,還避免了系統擁擠。用執行緒池控制線程的數量,其...