一、什么是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框架结构与框架成员)相关推荐

  1. 深入剖析线程池基本原理以及常见面试题详解

    文章目录 面试官:能给我讲讲线程池的实现原理? 线程池类继承关系 ThreadPoolExecutor 核心数据结构 面试官:给我讲讲线程池的有哪些参数? 面试官:如何优雅的关闭线程? 线程的生命周期 ...

  2. 线程池的创建及参数设置详解

    一. 常见线程池 线程池的创建方法主要有两类,第一是通过Executors 创建线程池,第二是通过 ThreadPoolExecutor 创建线程池. 首先我们来看通过Executors 创建的线程池 ...

  3. 多线程中线程池常见7个参数的详解以及执行流程

    一 线程池常见参数 1.1 概念 1.2 7个参数说明 7个参数: int corePoolSize, 常驻线程数量(核心) int maximumPoolSize,最大线程数量 long keepA ...

  4. Django框架学习(一)Django框架安装和项目创建详解

    Django框架学习(一)Django框架安装和项目创建详解 文章目录 Django框架学习(一)Django框架安装和项目创建详解 一.简介 1.1介绍 1.2 URL 1.3.框架原理 二.安装 ...

  5. php中yii的controller,详解PHP的Yii框架中的Controller控制器,yiicontroller

    详解PHP的Yii框架中的Controller控制器,yiicontroller 控制器是 MVC 模式中的一部分, 是继承yii\base\Controller类的对象,负责处理请求和生成响应. 具 ...

  6. java ee ssh三大框架知识点_详解JAVAEE——SSH三大框架整合(spring+struts2+hibernate)...

    详解JAVAEE--SSH三大框架整合(spring+struts2+hibernate) 发布时间:2020-09-17 13:34:05 来源:脚本之家 阅读:64 作者:kent鹏 一.整合原理 ...

  7. python语言的格式框架_django框架模板语言使用方法详解

    本文实例讲述了django框架模板语言使用方法.分享给大家供大家参考,具体如下: 模板功能 作用:生成html界面内容,模版致力于界面如何显示,而不是程序逻辑.模板不仅仅是一个html文件,还包括了页 ...

  8. 斯坦福CS231n 2017最新课程:李飞飞详解深度学习的框架实现与对比

     斯坦福CS231n 2017最新课程:李飞飞详解深度学习的框架实现与对比 By ZhuZhiboSmith2017年6月19日 13:37 斯坦福大学的课程 CS231n (Convolutio ...

  9. DL之YoloV3:Yolo V3算法的简介(论文介绍)、各种DL框架代码复现、架构详解、案例应用等配图集合之详细攻略

    DL之YoloV3:Yolo V3算法的简介(论文介绍).各种DL框架代码复现.架构详解.案例应用等配图集合之详细攻略 目录 Yolo V3算法的简介(论文介绍) 0.YoloV3实验结果 1.Yol ...

  10. 框架详解_详解:python Web框架flask表单实现(建议收藏)

    今天为大家带来的内容是:python框架flask表单实现详解 文章内容主要介绍了python框架flask表单实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需 ...

最新文章

  1. Kali2021.2 VMware最新版安装步骤
  2. 布隆过滤器 redis_使用基于 Redis 的 Java 布隆过滤器
  3. 雨林木风爱好者GHOSTXP装机版_NTFS_SP3_2010_03
  4. 读书笔记--MapReduce 适用场景 及 常见应用
  5. oracle添加分区语句_按照子分区模板添加子分区
  6. 在ASP.NET MVC使用JavaScriptResult
  7. 牛客挑战赛47 A 一道GCD问题
  8. delphi中Record 和Packed Record的区别
  9. 横空出世,席卷互联网--评微软等公司数据结构和算法面试100题 .
  10. C++ STL算法系列4---unique , unique_copy函数
  11. Varnish 缓存
  12. react项目案例_教程28——使用 react-rewired 配置基本的环境(项目)
  13. eeglab加载显示脑电数据,eeglab简单操作
  14. 微服务网关 gateway
  15. MySQL生日转年龄
  16. Oracle minus用法详解及应用实例
  17. C语言中getchar
  18. 数据结构——学期总结
  19. java输入输出流_Java学习之输入输出流
  20. 阴阳师手游服务器维护,《阴阳师》手游3月20日维护更新公告

热门文章

  1. varchar和Nvarchar区别 ----转载
  2. [VB] Option Explicit
  3. 计算机可执行指令吧,电脑“开始-运行”的常用命令及用法!很有用!
  4. 神经网络与中心场近似
  5. 2.Riesz定理及其应用
  6. 弹性均质圆环法计算过程_蚝油的加工工艺,蚝油总固形物(水分含量)计算公式,检测方法...
  7. oracle health monitor,Oracle 11g Health Monitor Checks
  8. 06540计算机网络考试大纲,2020年自考06540计算机网络基本原理复习资料(7)
  9. 7.1 概述-机器学习笔记-斯坦福吴恩达教授
  10. 3.4 参数展开-机器学习笔记-斯坦福吴恩达教授