Executors源碼閱讀與理解

簡述:此類是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>());
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章