线程池框架_Java并发——Executor框架详解(Executor框架结构与框架成员)
生活随笔
收集整理的這篇文章主要介紹了
线程池框架_Java并发——Executor框架详解(Executor框架结构与框架成员)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、什么是Executor框架?
我們知道線程池就是線程的集合,線程池集中管理線程,以實現線程的重用,降低資源消耗,提高響應速度等。線程用于執行異步任務,單個的線程既是工作單元也是執行機制,從JDK1.5開始,為了把工作單元與執行機制分離開,Executor框架誕生了,他是一個用于統一創建與運行的接口。Executor框架實現的就是線程池的功能。
二、Executor框架結構圖解
1、Executor框架包括3大部分:
(1)任務。也就是工作單元,包括被執行任務需要實現的接口:Runnable接口或者Callable接口;
(2)任務的執行。也就是把任務分派給多個線程的執行機制,包括Executor接口及繼承自Executor接口的ExecutorService接口。
(3)異步計算的結果。包括Future接口及實現了Future接口的FutureTask類。
Executor框架的成員及其關系可以用一下的關系圖表示:
/* 創建一個線程池,指定corePoolSize為2 */ ScheduledExecutorService scheduleService = Executors.newScheduledThreadPool(2); /* 啟動線程池 */ /* @param command 執行的任務 */ /* @param initialDelay delay多長時間之后首次執行任務 */ /* @param period the period 兩個任務之間的執行間隔時間 */ /* @param unit 執行時間的單位 */ scheduleService.scheduleAtFixedRate(lbWorker, 45, 183, TimeUnit.SECONDS);2、Executor框架的使用示意圖:
使用如下:
/* @param corePoolSize */ /* @param maximumPoolSize */ /* @param keepAliveTime 線程空閑時存活的有效時長 */ /* @param unit 時長單位 */ /* @param unit 時長單位 */ /* @param workQueue 等待執行的隊列 */ /* maximumPoolSize是在workQueue隊列滿了之后才額外創建的最大線程數量 */ ThreadPoolExecutor tpe = new ThreadPoolExecutor(5, 10, 100, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10)); /* 有返回值 */ Callable<String> callable = new Callable<String>() {public String call() throws Exception {try {Thread.sleep(5000);String a = "return String";return a;} catch (Exception e) {e.printStackTrace();return "exception";}} }; Future<String> future = tpe.submit(callable); /* 獲取返回值,這是一個同步阻塞式獲取的方法 */ future.get();/* 有返回值 */ FutureTask<String> futureTask = new FutureTask<String>(callable); futureTask.run();/* 無返回值 */ Runnable runnable = new Runnable() {public void run() {try {Thread.sleep(5000);String a = "return String";} catch (Exception e) {e.printStackTrace();}} }; tpe.execute(runnable);三、Executor框架成員:ThreadPoolExecutor實現類、ScheduledThreadPoolExecutor實現類、Future接口、Runnable和Callable接口、Executors工廠類
總結
以上是生活随笔為你收集整理的线程池框架_Java并发——Executor框架详解(Executor框架结构与框架成员)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 战神k660d怎么选启动盘 选择战神k6
- 下一篇: ug怎么画曲线_UG怎么画雨伞的曲面造型