簡述:此類是Executor(線程池的超級接口)的工具類,提供衆多靜態方法創建線程池!
/*
newFixedThreadPool
創建一個指定工作線程數量的線程池。每當提交一個任務就創建一個工作線程,
如果工作線程數量達到線程池初始的最大數,則將提交的任務存入到池隊列中。
FixedThreadPool是一個典型且優秀的線程池,它具有線程池提高程序效率和節省創建線程時所耗的開銷的優點。
但是,在線程池空閒時,即線程池中沒有可運行任務時,它不會釋放工作線程,還會佔用一定的系統資源。
*/
public static ExecutorService newFixedThreadPool(int nThreads) {
return new ThreadPoolExecutor(nThreads, nThreads,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());
}
/*
newScheduleThreadPool
創建一個定長的線程池,而且支持定時的以及週期性的任務執行,支持定時及週期性任務執行。
*/
public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize) {
return new ScheduledThreadPoolExecutor(corePoolSize);
}
/*
newScheduleThreadPool
創建一個定長的線程池,而且支持定時的以及週期性的任務執行,支持定時及週期性任務執行。
*/
public static ScheduledExecutorService newSingleThreadScheduledExecutor() {
return new DelegatedScheduledExecutorService
(new ScheduledThreadPoolExecutor(1));
}
/*
newSingleThreadExecutor
創建一個單線程化的Executor,即只創建唯一的工作者線程來執行任務,
它只會用唯一的工作線程來執行任務,保證所有任務按照指定順序(FIFO, LIFO, 優先級)執行。
如果這個線程異常結束,會有另一個取代它,保證順序執行。
單工作線程最大的特點是可保證順序地執行各個任務,並且在任意給定的時間不會有多個線程是活動的。
*/
public static ExecutorService newCachedThreadPool() {
return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
60L, TimeUnit.SECONDS,
new SynchronousQueue<Runnable>());
}