執行緒池的方式與使用場景

2021-10-02 15:25:45 字數 594 閱讀 5026

1、newfixedthreadpool:建立固定大小的執行緒池。執行緒池的大小一旦達到最大值就會保持不變,如果某個執行緒異常結束,執行緒池會補充乙個新執行緒。

2、newcashedthreadpool:建立可快取的執行緒池。如果執行緒池的大小超過了處理任務所需的執行緒,那麼就**部分空閒的執行緒(60秒不執行任務的執行緒)。當任務數增加時,此執行緒池又可以智慧型的新增新執行緒來處理任務。此執行緒池不會對執行緒池大小做限制,執行緒池大小完全依賴於作業系統(或者說 jvm)能夠建立的最大執行緒大小。

3、newsinglethreadexecutor:建立乙個單執行緒的執行緒池。這個執行緒池只有乙個執行緒在工作,也就是相當於單執行緒序列執行所有任務。如果這個唯一的執行緒因為異常結束,那麼會有乙個新的執行緒來替代它。此執行緒池保證所有任務的執行順序按照任務的提交順序執行。

4、newscheduledthreadpool:建立乙個大小無限的執行緒池。此執行緒池支援定時以及週期性執行任務的需求。

5、newsinglethreadscheduledexecutor:建立乙個單執行緒的執行緒池。此執行緒池支援定時以及週期性執行任務的需求。

執行緒池的各種使用場景

1 高併發 任務執行時間短的業務,執行緒池執行緒數可以設定為cpu核數 1,減少執行緒上下文的切換 2 併發不高 任務執行時間長的業務要區分開看 a 假如是業務時間長集中在io操作上,也就是io密集型的任務,因為io操作並不占用cpu,所以不要讓所有的cpu閒下來,可以加大執行緒池中的執行緒數目,讓...

執行緒池的種類和使用場景

newcachedthreadpool newfixedthreadpool newsinglethreadexecutor newscheduledthreadpool 執行緒池任務執行流程 當執行緒池小於corepoolsize時,新提交任務將建立乙個新執行緒執行任務,即使此時執行緒池中存在空閒...

執行緒池的種類,區別和使用場景

newcachedthreadpool public static executorservice newcachedthreadpool newfixedthreadpool public static executorservice newfixedthreadpool int nthreads...