国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java并發編程 - Executor框架詳解

2019-11-06 06:18:30
字體:
來源:轉載
供稿:網友

Executor框架(接口)負責在用戶級別進行任務的調度和執行, 實現了任務調度和執行的分離.

Executor框架簡介

Executor框架的兩級調度模型

executor-workflow

在上層, java程序通過將應用分解為若干個任務(task), 然后使用用戶級的調度器(Executor框架)將task映射為固定數量的Java線程.

在底層, Java線程與操作系統的線程是一一對應的關系, 由操作系統調度給可用的CPU. 底層的調度不受上層的影響.

Executor框架工作流程

executor-workflow

主要包括3大組件:

異步任務: Runnable或者Callable的實現類;異步任務的調度和執行(用戶級別): Executor接口的實現類ThreadPoolExecutorScheduledThreadPoolExecutor;異步計算的結果: 接口Future和接口的實現類FutureTask.

組件間關系如下:

executo-inherent

ThreadPoolExecutor詳解

ThreadPoolExecutor是Executor框架的核心, 是線程池的實現類, 負責異步進行任務的調度和執行, 共有以下重要的配置參數:

corePoolSize: 核心線程池大小maximumPoolSize: 最大線程池大小;BlockingQueue: 用于保存任務的工作隊列;

通過工具類Executors, 可以快速創建3種預定義參數的ThreadPoolExecutor, 以下將分別進行分析.

FixedThreadPool詳解

被稱為可重用固定線程數的線程池, 實際上就是ThreadPoolExecutorcorePoolSizemaximumPoolSize設置為相同大小, 同時使用了無界隊列的情況.

SingleThreadExecutor詳解

同一時間只有一個線程在執行任務, 為了確保任務的順序執行. 實際上就是FixedThreadPool, corePoolSizemaximumPoolSize設置為1的特殊情況.

CachedThreadPool詳解

corePoolSize設置為0, 在運行過程中會根據需要來創建線程執行任務, 使用沒有容量的SynchronousQueue作為線程池的工作隊列. 但是maximumPool是無界的, 所以適合于應對大量短任務的情況, 對于運行完任務的線程, 會有一個等待時間, 默認超過60秒沒有新任務到來則自動銷毀, 所以長時間保持空閑的CachedThreadPool不會使用任何資源.

未完待續


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 闵行区| 平舆县| 鹿邑县| 乐陵市| 广平县| 秦安县| 扶余县| 渝北区| 永宁县| 高淳县| 南汇区| 襄城县| 仁怀市| 中阳县| 平和县| 临朐县| 云安县| 景洪市| 蒙山县| 大连市| 繁峙县| 台中市| 册亨县| 涡阳县| 英吉沙县| 馆陶县| 耒阳市| 班玛县| 大田县| 民县| 雷山县| 东平县| 姚安县| 朝阳县| 长葛市| 徐闻县| 娄烦县| 武隆县| 游戏| 禹州市| 霸州市|