#簡述 Executors是一個工廠類,是ExecutorService的實用方法。他可以產生ExecutorService、ScheduledExecutorService、ThreadFactory和Callable實例。 #方法介紹java
public static ExecutorService newFixedThreadPool(int nThreads) { return new ThreadPoolExecutor(nThreads, nThreads, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); }
建立一個線程數固定的可複用線程池。該線程池包含一個無界共享隊列。線程池中有固定的活躍線城處理任務,若是多餘的任務進入則放置到無界共享隊列中去等待有線程空餘。若是有任何一個線程在線程池關閉以前執行任務的過程當中失敗而被終止,則新的線程將要代替它執行子任務。線程池裏面的線程在線程池被關閉以前一直存活。緩存
public static ExecutorService newFixedThreadPool(int nThreads, ThreadFactory threadFactory) { return new ThreadPoolExecutor(nThreads, nThreads, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(), threadFactory); }
和上一個不一樣的是,構造方法新加了一個線程工廠。該工廠可以在必要的時候爲線程池新增線程。異步
public static ExecutorService newSingleThreadExecutor() { return new FinalizableDelegatedExecutorService (new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>())); } static class FinalizableDelegatedExecutorService extends DelegatedExecutorService { FinalizableDelegatedExecutorService(ExecutorService executor) { super(executor); } protected void finalize() { super.shutdown(); } }
建立一個單線程的線程池。該方法返回了一個FinalizableDelegatedExecutorService實例,FinalizableDelegatedExecutorService類是ExecutorService的包裝類。性能
public static ExecutorService newSingleThreadExecutor(ThreadFactory threadFactory) { return new FinalizableDelegatedExecutorService (new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(), threadFactory)); }
也是一個單線程池,返回了包裝類,拒絕修改線程池信息,而且放置了一個線程工廠類,能夠在適當的時候新生成一個線程(好比之前的那個線程因爲異常情況被關閉)。線程
public static ExecutorService newCachedThreadPool() { return new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue<Runnable>()); }
建立一個線程池,線程池中建立須要的線程。任務能夠複用以前建立的線程。該線程池可以經過執行許多生命週期段的異步任務來提升程序性能。在調用execute方法的過程當中會複用以前建立的可用線程。若是沒有線程可用,線程池會新建立線程並添加到線程池中,若是線程超過60秒鐘還未使用則會從緩存中刪除。code
public static ScheduledExecutorService newSingleThreadScheduledExecutor() { return new DelegatedScheduledExecutorService (new ScheduledThreadPoolExecutor(1)); }
建立了一個單線程執行週期性任務。返回包裝器類,不可改變線程池信息。生命週期
public static ScheduledExecutorService newSingleThreadScheduledExecutor(ThreadFactory threadFactory) { return new DelegatedScheduledExecutorService (new ScheduledThreadPoolExecutor(1, threadFactory)); }
和上面的方法相似,不一樣的是指定了建立新線程的工廠實例。隊列
public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize) { return new ScheduledThreadPoolExecutor(corePoolSize); }
建立執行週期任務的線程池,線程池中的線程數爲corePoolSize。it