Oracle官方並發教程之Executor接口

杜老師說 2022-01-07 13:55:12 阅读数:657

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接口

ExecutorService接口在提供了execute方法的同時,新加了更加通用的submit方法。submit方法除了和execute方法一樣可以接受Runnable對象作為參數,還可以接受Callable對象作為參數。使用Callable對象可以能使任務返還執行的結果。通過submit方法返回的Future對象可以讀取Callable任務的執行結果,或是管理Callable任務和Runnable任務的狀態。

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

ScheduledExecutorService接口

ScheduledExecutorService擴展ExecutorService接口並添加了schedule方法。調用schedule方法可以在指定的延時後執行一個Runnable或者Callable任務。ScheduledExecutorService接口還定義了按照指定時間間隔定期執行任務的scheduleAtFixedRate方法和scheduleWithFixedDelay方法。

原創文章,轉載請注明: 轉載自並發編程網 – ifeve.com本文鏈接地址: Oracle官方並發教程之Executor接口

FavoriteLoading添加本文到我的收藏
版权声明:本文为[杜老師說]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201071355124130.html