一: executorservice executorservice = executors.newcachethreadpool();
根據需要建立乙個新的執行緒池,不過以前建立的執行緒池可用時則復用以前建立的執行緒池。這些池通常會提高執行的很多短期非同步任務的程式的效能。呼叫execute(如果可用)將重用以前構造的執行緒。如果沒有現有執行緒可用,乙個新的執行緒將被建立並新增到池中。尚未使用的60秒執行緒終止和從快取中移除。因此,剩下的空閒足夠長池不會消耗任何資源。需要注意的是具有類似性質的,但不同的資訊(例如,超時引數)池可能使用的threadpoolexecutor構造來建立。
codes:
executorservice executorservice = executors.newcachethreadpool();
for(int i = 0;i < 100;i++) catch (interruptedexception e)
executorservice.execute(new runnable()); }
執行緒池為無限大,當執行第二個任務時第乙個任務已經完成,會復用執行第乙個任務的執行緒,而不用每次新建執行緒。
二:executorservice executorservice = executors.newfixesthreadpool(int nthread);
建立乙個使用操作關閉共享的無界佇列的執行緒固定數量的執行緒池。在任何時候,至多執行緒的執行緒將被啟用的處理任務。如果額外的任務提交時,所有執行緒處於活動狀態,他們將在佇列中等待,直到某個執行緒可用。如果任何執行緒關閉前的執行過程中終止因故障,如果需要執行後續任務,將會有新取而代之。池中的執行緒將一直存在,直到它明確地關閉。
codes:
executorservice executorservice = executors.newfixesthreadpool(6);
for(int i = 0;i < 100;i++)(interruptedexception e)
}); }
執行緒池的大小為6.
建立乙個定長線程池,支援定時及週期性任務執行。
codes:
scheduledexecutorservice scheduledthreadpool = executors.newscheduledthreadpool(6);
scheduledthreadpool.schedule(new runnable()
}, 3, timeunit.seconds);
每三秒執行一次,
scheduledexecutorservice scheduledthreadpool= executors.newscheduledthreadpool(6);
scheduledthreadpool.schedule(newrunnable()
},1, 3, timeunit.seconds);
延遲一秒,每三秒執行一次。
四:executorservice executorservice = executors.newsinglethreadexecutor();
建立乙個使用單個worker執行緒操作以無界佇列的執行人。(但是請注意,如果這個單一執行緒執行之前關閉期間終止由於故障,乙個新的將在需要時執行後續的任務取代其位置。)任務被保證順序地執行,以及不超過乙個的任務將是有源在任何給定的時間。與其他等效的newfixedthreadpool(1)所返回的執行保證無需重新配置使用其他的執行緒。
codes:
executorservice singlethreadexecutor= executors.newsinglethreadexecutor();
for (int i = 0; i < 10; i++) catch (interruptedexceptione) }
}); }
它只會用唯一的工作執行緒來執行任務,保證所有任務按照指定順序(fifo, lifo, 優先順序)執行。
執行緒池ExecutorService
執行緒池 任務提交到執行緒池,而不是直接交給某執行緒,執行緒池拿到任務後,它在內部找空閒的執行緒進行執行 封裝 任務是提交給執行緒池,乙個執行緒只能執行乙個任務,但可以同時向乙個執行緒池提交多個任務。建立固定大小的執行緒池 建立快取執行緒池 如何實現執行緒死掉後重新啟動?答案 建立單一執行緒池exe...
執行緒十四 ExecutorService
executorservice不僅能呼叫runnable的任務,它還提供了呼叫callable任務的方法。callable任務中的call方法能夠返回任務執行的結果,同時還可以丟擲受檢的異常,call方法宣告了乙個throws exception子句。為了描述executorservice的應用,我...
ExecutorService執行緒池
executorservice 建立多執行緒的步驟 1。定義執行緒類 class handler implements runnable 2。建立executorservice執行緒池 3。呼叫執行緒池操作 幾種不同的executorservice執行緒池物件 1.newcachedthreadpo...