线程池框架_Java并发——Executor框架详解(Executor框架结构与框架成员)
一、什么是Executor框架?
我們知道線程池就是線程的集合,線程池集中管理線程,以實(shí)現(xiàn)線程的重用,降低資源消耗,提高響應(yīng)速度等。線程用于執(zhí)行異步任務(wù),單個(gè)的線程既是工作單元也是執(zhí)行機(jī)制,從JDK1.5開(kāi)始,為了把工作單元與執(zhí)行機(jī)制分離開(kāi),Executor框架誕生了,他是一個(gè)用于統(tǒng)一創(chuàng)建與運(yùn)行的接口。Executor框架實(shí)現(xiàn)的就是線程池的功能。
二、Executor框架結(jié)構(gòu)圖解
1、Executor框架包括3大部分:
(1)任務(wù)。也就是工作單元,包括被執(zhí)行任務(wù)需要實(shí)現(xiàn)的接口:Runnable接口或者Callable接口;
(2)任務(wù)的執(zhí)行。也就是把任務(wù)分派給多個(gè)線程的執(zhí)行機(jī)制,包括Executor接口及繼承自Executor接口的ExecutorService接口。
(3)異步計(jì)算的結(jié)果。包括Future接口及實(shí)現(xiàn)了Future接口的FutureTask類。
Executor框架的成員及其關(guān)系可以用一下的關(guān)系圖表示:
/* 創(chuàng)建一個(gè)線程池,指定corePoolSize為2 */ ScheduledExecutorService scheduleService = Executors.newScheduledThreadPool(2); /* 啟動(dòng)線程池 */ /* @param command 執(zhí)行的任務(wù) */ /* @param initialDelay delay多長(zhǎng)時(shí)間之后首次執(zhí)行任務(wù) */ /* @param period the period 兩個(gè)任務(wù)之間的執(zhí)行間隔時(shí)間 */ /* @param unit 執(zhí)行時(shí)間的單位 */ scheduleService.scheduleAtFixedRate(lbWorker, 45, 183, TimeUnit.SECONDS);2、Executor框架的使用示意圖:
使用如下:
/* @param corePoolSize */ /* @param maximumPoolSize */ /* @param keepAliveTime 線程空閑時(shí)存活的有效時(shí)長(zhǎng) */ /* @param unit 時(shí)長(zhǎng)單位 */ /* @param unit 時(shí)長(zhǎng)單位 */ /* @param workQueue 等待執(zhí)行的隊(duì)列 */ /* maximumPoolSize是在workQueue隊(duì)列滿了之后才額外創(chuàng)建的最大線程數(shù)量 */ 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); /* 獲取返回值,這是一個(gè)同步阻塞式獲取的方法 */ future.get();/* 有返回值 */ FutureTask<String> futureTask = new FutureTask<String>(callable); futureTask.run();/* 無(wú)返回值 */ 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實(shí)現(xiàn)類、ScheduledThreadPoolExecutor實(shí)現(xiàn)類、Future接口、Runnable和Callable接口、Executors工廠類
總結(jié)
以上是生活随笔為你收集整理的线程池框架_Java并发——Executor框架详解(Executor框架结构与框架成员)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 战神k660d怎么选启动盘 选择战神k6
- 下一篇: ug怎么画曲线_UG怎么画雨伞的曲面造型