ExecutorService介面繼承於Executor介面,主要提供以下額外功能:
-
管理終結
-
產生Future物件,用於跟蹤一個或多個任務的進度。
ExecutorService可以被shut down。這個操作,將導致它拒絕接受新的任務。它提供了兩個關閉EexecutorService的方法。
-
shutdown():執行之前提交的任務,在ExecutorService關閉之前都將被執行。注意:ExecutorService只保證已提交的任務都啟動,至於有沒有完成,就不管了,只要都啟動了,它就可以關閉了。
-
shutdownNow(): 阻止已提交但是正在等待的任務啟動,且會嘗試取消當前正在執行的任務。
一旦進入Termination(終結)狀態,這個executor將不再有正在執行的任務,也沒有正在等待的任務,且沒有可以被提交的新任務。一個沒用的ExecutorService應該被shutdown,來回收它的資源。
submit方法基於execute(Runnable),通過建立並返回一個Future物件擴充套件了execute方法,可控制任務的執行。比如可取消執行,也可阻塞當前執行緒等待任務完成。
invokeAny 和 invokeAll 展示了最常用的集體執行的形式。即執行一個集合的任務,並且等待至少一個或者所有任務完成。
Executors類為ExcutorService提供工廠方法