要配置乙個執行緒池是比較複雜的,尤其是對於執行緒池的原理不是很清楚的情況下,很有可能配置的執行緒池不是較優的,因此在executors類裡面提供了一些靜態工廠,生成一些常用的執行緒池。
1、newfixedthreadpool:建立固定大小的執行緒池。執行緒池的大小一旦達到最大值就會保持不變,如果某個執行緒因為執行異常而結束,那麼執行緒池會補充乙個新執行緒。
/*
函式功能:建立乙個固定長度的的執行緒池,用於儲存任務的阻塞隊列為無限制長度的linkedblockingqueue。
執行緒池中的執行緒將會一直存在除非執行緒池shutdown,即執行緒池中的執行緒沒有受到存活時間的限制。
*/public
static executorservice newfixedthreadpool(int nthreads)
/*函式功能:建立指定執行緒數的執行緒池,並且指定了執行緒工廠來生產新的執行緒。任務佇列無界。
*/public
static executorservice newfixedthreadpool(int nthreads, threadfactory threadfactory)
2、newcachedthreadpool:建立乙個可快取的執行緒池。如果執行緒池的大小超過了處理任務所需要的執行緒,那麼就會**部分空閒(60秒不執行任務)的執行緒,當任務數增加時,此執行緒池又可以智慧型的新增新執行緒來處理任務。此執行緒池不會對執行緒池大小做限制,執行緒池大小完全依賴於作業系統(或者說jvm)能夠建立的最大執行緒大小。
在executors類中此方法的**如下:
/*
函式功能:建立乙個執行緒池,這個執行緒池的corepoolsize的大小為零,maxpoolsize為integer.max_value.
即對於執行緒池,只要需要就可以建立新的執行緒。不過如果有空閒執行緒存在則就會重用此執行緒。
此執行緒池的執行緒都有一定的存活時間。即如果執行緒已經有60s沒有被使用則就會被移除執行緒池。
*/public
static executorservice newcachedthreadpool()
//與上面的功能一樣,只是指定了執行緒工廠。
public
static executorservice newcachedthreadpool(threadfactory threadfactory)
3、newsinglethreadexecutor:建立乙個單執行緒的執行緒池。這個執行緒池只有乙個執行緒在工作,也就是相當於單執行緒序列執行所有任務。如果這個唯一的執行緒因為異常結束,那麼會有乙個新的執行緒來替代它。此執行緒池保證所有任務的執行順序按照任務的提交順序執行。
//建立乙個單工作執行緒且無邊界的佇列的執行緒池。如果執行期間此執行緒掛掉了,則如果需要就會產生乙個新執行緒來順序執行任務。
//任何時候都不會有超過乙個執行緒是存活的
public
static executorservice newsinglethreadexecutor()
/*函式功能:與newsinglethreadexecutor()功能一樣,只是指定了執行緒工廠來生產新的執行緒。
*/public
static executorservice newsinglethreadexecutor(threadfactory threadfactory)
4、newscheduledthreadpool:建立乙個大小無限的執行緒池。此執行緒池支援定時以及週期性執行任務的需求。
//建立乙個執行緒池,該執行緒池提供延時執行任務或者是週期性執行任務的功能。
public
static scheduledexecutorservice newscheduledthreadpool(int corepoolsize)
public
static scheduledexecutorservice newscheduledthreadpool(
int corepoolsize, threadfactory threadfactory)
scheduledthreadpoolexecutor 類中的建構函式如下:
/*
函式功能:根據指定的corepoolsize的大小來建立執行緒池,maxpoolsize的大小為integer.max_value,執行緒沒有存活時間的限制
*/public
scheduledthreadpoolexecutor(int corepoolsize)
5、newsinglethreadscheduledexecutor:建立乙個單執行緒的執行緒池。此執行緒池支援定時以及週期性執行任務的需求。
//建立乙個單執行緒的執行緒池,提供任務延時執行或週期性執行的功能。
public
static scheduledexecutorservice newsinglethreadscheduledexecutor()
public
static scheduledexecutorservice newsinglethreadscheduledexecutor(threadfactory threadfactory)
scheduledthreadpoolexecutor 類中的建構函式如下:
/*
函式功能:根據指定的corepoolsize的大小來建立執行緒池,maxpoolsize的大小為integer.max_value.
*/public
scheduledthreadpoolexecutor(int corepoolsize)
以上幾種建立執行緒池的方法我們都需要有乙個大體的影響哈。 執行緒池 Executors類建立執行緒池
executors靜態工廠建立幾種常用執行緒池 1.建立了乙個固定執行緒數量的執行緒池,可以控制線程最大併發數,超出的執行緒會在佇列中等待。newfixedthreadpool int nthreads 執行緒池中線程數量是要指定傳入的,注意在固定大小的執行緒池中使用的阻塞佇列是linkedbloc...
Executors類中建立執行緒池的幾種方法的分析
要配置乙個執行緒池是比較複雜的,尤其是對於執行緒池的原理不是很清楚的情況下,很有可能配置的執行緒池不是較優的,因此在executors類裡面提供了一些靜態工廠,生成一些常用的執行緒池。1 newfixedthreadpool 建立固定大小的執行緒池。執行緒池的大小一旦達到最大值就會保持不變,如果某個...
executors建立執行緒池
private static final executor exec executors.newfixedthreadpool 50 runnable runnable new runnable exec.execute runnable callablecallable new callable ...