1. 程式人生 > >執行緒十四:ExecutorService

執行緒十四:ExecutorService

ExecutorService不僅能呼叫Runnable的任務,它還提供了呼叫Callable任務的方法。Callable任務中的call方法能夠返回任務執行的結果,同時還可以丟擲受檢的異常,call方法聲明瞭一個throws Exception子句。為了描述ExecutorService的應用,我們看一個例項:

例子中分別建立了Runnable和Callable兩個任務物件,service物件分別提交這兩個任務並打印出Callable任務的返回值。其中的Future介面代表非同步計算的結果,它的名字很好地體現了它將在未來某個時刻才有效,通過Future介面的get方法,我們可以返回Callable任務執行的結果。

例子中通過Executors工具類返回了一個ExecutorService介面的實現類。newFixedThreadPool方法建立了一個執行緒池佇列,它定義了最多有多少個同時工作的執行緒來處理任務,如果有一個任務在所有執行緒都在執行時提交,那麼它就會在佇列中等待一條可用的執行緒。

除了能夠提交單個任務,ExecutorService還能提交一個任務集合,看一個例項:

例子中建立了一個執行任務的集合,通過invokeAll方法集中執行,返回一個結果集合,通過一個for迴圈返回各個任務的執行結果。

參考連結