廣義上的完整線程池可能還包括Thread/Runnable、Timer/TimerTask等部分。這裏只介紹主要的和高級的API和類。工具
此類是個工具類(工廠類),它提供對Executor、ExecutorService、ScheduledExecutorService、ThreadFactory 和 Callable 類的一些實用方法。spa
對ExecutorService類的初始化線程
ExecutorService newCachedThreadPool()htm
初始化0個線程,最大線程數爲Integer.MAX_VALUEget
ExecutorService newCachedThreadPool(ThreadFactory threadFactory)it
初始化0個線程,最大線程數爲Integer.MAX_VALUEio
ExecutorService newFixedThreadPool(int nThreads) :class
建立大小固定的線程執行者(初始化nThreads個線程,最大線程數爲nThreads)thread
ExecutorService newFixedThreadPool(int nThreads, ThreadFactory threadFactory):配置
建立大小固定的線程執行者(初始化nThreads個線程,最大線程數爲nThreads)
ExecutorService newSingleThreadExecutor():
建立一個線程執行者(初始化1個線程,最大線程數爲1)
ExecutorService newSingleThreadExecutor(ThreadFactory threadFactory):
建立一個線程執行者(初始化1個線程,最大線程數爲1)
ScheduledExecutorService newScheduledThreadPool(int corePoolSize)
建立一個調度任務線程執行者
ScheduledExecutorService newScheduledThreadPool(int corePoolSize, ThreadFactory threadFactory)
建立一個調度任務線程執行者
<T> Future<T> submit(Callable<T> task):
提交一個 Callable任務用於執行,並返回一個表示該任務的 Future。
Future<?> submit(Runnable task)
提交一個 Runnable任務用於執行,並返回一個表示該任務的 Future。
<T> Future<T> submit(Runnable task, T result)
提交一個 Runnable任務用於執行,並返回一個表示該任務的 Future。
<T> T invokeAny(Collection<? extends Callable<T>> tasks)
執行給定的任務,若是某個任務已成功完成(也就是未拋出異常),則返回其結果。一旦正常或異常返回後,則取消還沒有完成的任務。若是此操做正在進行時修改了給定的集合,則此方法的結果是不明確的。
<T> T invokeAny(Collection<? extends Callable<T>> tasks,
long timeout, TimeUnit unit)
執行給定的任務,若是某個任務已成功完成(也就是未拋出異常),則返回其結果。一旦正常或異常返回後,則取消還沒有完成的任務。若是此操做正在進行時修改了給定的集合,則此方法的結果是不明確的。(此方法執行全部任務,並返回第一個完成(未超時)且沒有拋出異常的任務的結果)
<T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks)
執行給定的任務,當全部任務完成時,返回保持任務狀態和結果的 Future 列表。返回列表的全部元素的 Future.isDone() 爲 true。注意,能夠正常地或經過拋出異常來終止已完成 任務。若是正在進行此操做時修改了給定的集合,則此方法的結果是不明確的。
<T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks,
long timeout, TimeUnit unit)
此方法執行全部任務,當它們所有完成且未超時,返回它們的執行結果。
此類是線程池類,
void execute(Runnable command)
void shutdown()
List<Runnable> shutdownNow()
boolean isTerminated():若是你已經調用shutdown()或shutdownNow()方法,而且執行者完成關閉它的處理時,此方法返回true。
boolean isShutdown():若是你在執行者中調用shutdown()方法,此方法返回true。
boolean awaitTermination(long timeout, TimeUnit unit):此方法阻塞調用線程,直到執行者的任務結束或超時
int getPoolSize():此方法返回線程池實際的線程數
int getActiveCount():此方法返回在執行者中正在執行任務的線程數
int getCompletedTaskCount():此方法返回執行者完成的任務數
int getLargestPoolSize():此方法,返回池中某一時刻最大的線程數
boolean awaitTermination(long timeout, TimeUnit unit)
等待線程執行完畢
給定的延遲後運行命令,或者按期執行命令。須要多個輔助線程時,或者要求 ThreadPoolExecutor 具備額外的靈活性或功能時,此類要優於 Timer。
ScheduledFuture<?> schedule(Runnable command,long delay,TimeUnit unit)
在給定的延遲後,建立和執行Runnabel。
ScheduledFuture<V> schedule(Callable<V> callable,long delay,TimeUnit unit)
在給定的延遲後,建立和執行Callable。
void setExecuteExistingDelayedTasksAfterShutdownPolicy(boolean value):
當你調用shutdown()方法時,而且有待處理的任務正在等待它們延遲結束。默認的行爲是,無論執行者是否結束這些任務都將被執行,使用false,調用 shutdown()時,待處理的任務不會被執行。
ScheduledFuture<?> scheduleAtFixedRate(Runnable command,long initialDelay,long period,TimeUnit unit)
週期性的執行任務(你想要週期性執行的任務、第一次執行任務的延遲時間、兩次執行之間的間隔期間、第二、3個參數的時間單位)
ScheduledFuture<?> scheduleWithFixedDelay(Runnable command,long initialDelay,long delay,TimeUnit unit)
在任務結束後固定的時間週期性執行任務(你想要週期性執行的任務、第一次執行任務的延遲時間、參數決定任務執行結束與下次執行開始之間的一段時間、第二、3個參數的時間單位)
void setContinueExistingPeriodicTasksAfterShutdownPolicy(boolean value)
當你使用 shutdown()方法時,你也能夠經過參數配置一個SeduledThreadPoolExecutor的行爲。shutdown()方法默認的行爲是,當你調用這個方法時,計劃任務就結束。 你能夠使用ScheduledThreadPoolExecutor類的 setContinueExistingPeriodicTasksAfterShutdownPolicy()方法設置true值改變這個行爲。在調用 shutdown()方法時,週期性任務將不會結束。