java多線程之Executor框架


Executor框架簡介

Executor框架的結構

Executor框架主要由3大部分組成:

  • 任務: 包括被執行的任務需要實現的接口:Runable 接口、Callable接口;
  • 任務的執行: 包括任務執行機制的核心接口Executor,以及繼承自Executor的ExecutorService接口。Executor框架有兩個關鍵類實現了ExecutorService接口:ThreadPoolExecutor 和 ScheduledThreadPoolExecutor、ForkJoinPool;
  • 任務的異步計算結果: 包括Future接口和實現Future接口的FutureTask類、ForkJoinTask類。

Executor框架的成員介紹

1、Runnable接口 和 Callable接口

  Runnable接口和Callable接口的實現類,都可以被ThreadPoolExecutor或Scheduled-
ThreadPoolExecutor執行。它們之間的區別是Runnable不會返回結果,而Callable可以返回結
果。
  除了可以自己創建實現Callable接口的對象外,還可以使用工廠類Executors來把一個
Runnable包裝成一個Callable。

2、Executor、ExecutorService、AbstractExecutorService、ScheduledExecutorService
  • Executor 接口: 是Executor框架的基礎,它將任務的提交與任務的執行分離開來。
  • ExecutorService 接口: 擴展了Executor接口,提供了管理終止的方法(shutdown( ) ,etc),以及可為跟蹤一個或多個異步任務執行狀況而生成 Future 的方法。
  • AbstractExecutorService 類: 提供 ExecutorService 執行方法的默認實現。
  • ScheduledExecutorService 接口: 一個特殊的 ExecutorService,提供了 可安排在給定的延遲后運行或定期執行的命令。
3、ThreadPoolExecutor

  ThreadPoolExecutor通常使用工廠類Executors來創建。Executors可以創建3種類型的ThreadPoolExecutor:SingleThreadExecutor、FixedThreadPool和CachedThreadPool。
以下是這三種線程池的應用場景說明:

  • FixedThreadPool適用於為了滿足資源管理的需求,而需要限制當前線程數量的應用場景,它適用於負載比較重的服務器。
  • SingleThreadExecutor適用於需要保證順序地執行各個任務;並且在任意時間點,不會有多個線程是活動的應用場景。
  • CachedThreadPool是大小無界的線程池,適用於執行很多的短期異步任務的小程序,或者是負載較輕的服務器

4、ScheduledThreadPoolExecutor

  ScheduledThreadPoolExecutor通常使用工廠類Executors來創建。Executors可以創建2種類
型的ScheduledThreadPoolExecutor,如下。

    • ScheduledThreadPoolExecutor:包含若干個線程的ScheduledThreadPoolExecutor。
    • SingleThreadScheduledExecutor:只包含一個線程的ScheduledThreadPoolExecutor。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM