1. 程式人生 > >Oracle官方併發教程之Executor介面

Oracle官方併發教程之Executor介面

原文連結譯文連結,譯者:Greenster,校對:鄭旭東

java.util.concurrent中包括三個Executor介面:

  • Executor,一個執行新任務的簡單介面。
  • ExecutorService,擴充套件了Executor介面。添加了一些用來管理執行器生命週期和任務生命週期的方法。
  • ScheduledExecutorService,擴充套件了ExecutorService。支援Future和定期執行任務。

通常來說,指向Executor物件的變數應被宣告為以上三種介面之一,而不是具體的實現類。

Executor介面

Executor介面只有一個execute方法,用來替代通常建立(啟動)執行緒的方法。例如:r是一個Runnable物件,e是一個Executor物件。可以使用

    e.execute(r);

來代替

   (new Thread(r)).start();

但execute方法沒有定義具體的實現方式。對於不同的Executor實現,execute方法可能是建立一個新執行緒並立即啟動,但更有可能是使用已有的工作執行緒執行r,或者將r放入到佇列中等待可用的工作執行緒。(我們將線上程池一節中描述工作執行緒。)

ExecutorService介面

新加了更加通用的submit方法。submit方法除了和execute方法一樣可以接受Runnable物件作為引數,還可以接受Callable物件作為引數。使用Callable物件可以能使任務返還執行的結果。通過submit方法返回的Future物件可以讀取Callable任務的執行結果,或是管理Callable任務和Runnable任務的狀態。

ExecutorService也提供了批量執行Callable任務的方法。最後,ExecutorService還提供了一些關閉執行器的方法。如果需要支援即時關閉,執行器所執行的任務需要正確處理中斷。

ScheduledExecutorService介面

ScheduledExecutorService擴充套件ExecutorService介面並添加了schedule方法。呼叫schedule方法可以在指定的延時後執行一個Runnable或者Callable任務。ScheduledExecutorService介面還定義了按照指定時間間隔定期執行任務的scheduleAtFixedRate方法和scheduleWithFixedDelay方法。


[email protected]唯品會。關注Java語言、併發程式設計、Spring框架等。