Java并发编程之Executor接口的使用


Posted in Java/Android onJune 21, 2021

一、Executor接口的理解

  • Executor属于java.util.concurrent包下;
  • Executor是任务执行机制的核心接口

二、Executor接口的类图结构

Java并发编程之Executor接口的使用

由类图结构可知:

  • ThreadPoolExecutor 继承了AbstractExecutorService接口;
  • AbstractExecutorService接口实现了ExecutorService接口;
  • ExecutorService继承了Executor接口;
  • 因此以下部分主要讲解ThreadPoolExecutor类。

三、Executor接口中常用的方法

void execute(Runnable command) 在将来的某个时间执行给定的命令。 该命令可以在一个新线程,一个合并的线程中或在调用线程中执行,由Executor实现。

四、线程池的创建分为两种方式(主要介绍通过ThreadPoolExecutor方式)

注:通过Executors类的方式创建线程池,参考lz此博文链接https://www.3water.com/article/215163.htm

1.ThreadPoolExecutor类中的构造方法

public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue workQueue,defaultHandler)

2、 ThreadPoolExecutor类中构造函数的参数解析

  • corePoolSize 核心线程最大数量,通俗点来讲就是,线程池中常驻线程的最大数量
  • maximumPoolSize 线程池中运行最大线程数(包括核心线程和非核心线程)
  • keepAliveTime线程池中空闲线程(仅适用于非核心线程)所能存活的最长时间
  • unit 存活时间单位,与keepAliveTime搭配使用
  • workQueue 存放任务的阻塞队列
  • handler 线程池饱和策略

3、ThreadPoolExecutor类创建线程池示例

代码

package com.xz.thread.executor;

import java.util.concurrent.*;

/**
 * @description:
 * @author: xz
 * @create: 2021-06-16 22:16
 */
public class Demo {
    public static void main(String[] args) {
        ThreadPoolExecutor pool = new ThreadPoolExecutor(3,3,
                1L, TimeUnit.MINUTES,new LinkedBlockingDeque<>());
        for(int i=1;i<=5;i++){
            pool.execute(new Runnable() {
                @Override
                public void run() {
                    System.out.println(Thread.currentThread().getName());
                    try {
                        Thread.sleep(1000);
                        System.out.println("睡眠一秒钟");
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            });
        }
    }
}

输出结果如下图

Java并发编程之Executor接口的使用

结论:无论是创建何种类型线程池(newFixedThreadPool、newSingleThreadExecutor、newCachedThreadPool等等),均会调用ThreadPoolExecutor构造函数。

Java并发编程之Executor接口的使用
Java并发编程之Executor接口的使用

到此这篇关于Java并发编程之Executor接口的使用的文章就介绍到这了,更多相关Java Executor接口内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Java/Android 相关文章推荐
Java 将PPT幻灯片转为HTML文件的实现思路
Jun 11 Java/Android
详解Spring事件发布与监听机制
Jun 30 Java/Android
浅谈resultMap的用法及关联结果集映射
Jun 30 Java/Android
Spring实现内置监听器
Jul 09 Java/Android
gateway网关接口请求的校验方式
Jul 15 Java/Android
SpringRetry重试框架的具体使用
Jul 25 Java/Android
Logback 使用TurboFilter实现日志级别等内容的动态修改操作
Aug 30 Java/Android
SpringBoot整合阿里云视频点播的过程详解
Dec 06 Java/Android
JavaCV实现照片马赛克效果
Jan 22 Java/Android
Java 关于String字符串原理上的问题
Apr 07 Java/Android
java高级用法JNA强大的Memory和Pointer
Apr 19 Java/Android
Spring Boot优化后启动速度快到飞起技巧示例
Jul 23 Java/Android
深入理解以DEBUG方式线程的底层运行原理
浅谈什么是SpringBoot异常处理自动配置的原理
SpringAop日志找不到方法的处理
详解SpringBoot异常处理流程及原理
Java新手教程之ArrayList的基本使用
Java各种比较对象的方式的对比总结
Jun 20 #Java/Android
Java Optional<Foo>转换成List<Bar>的实例方法
Jun 20 #Java/Android
You might like
PHP中feof()函数实例测试
2014/08/23 PHP
php+xml编程之SimpleXML的应用实例
2015/01/24 PHP
深入理解PHP中的Streams工具
2015/07/03 PHP
javascript EXCEL 操作类代码
2009/07/30 Javascript
JavaScript经典效果集锦
2010/07/06 Javascript
跟我学Nodejs(三)--- Node.js模块
2014/05/25 NodeJs
分享一个自己写的简单的javascript分页组件
2015/02/15 Javascript
Angular的事件和表单详解
2016/12/26 Javascript
jQuery快速实现商品数量加减的方法
2017/02/06 Javascript
JS实现中国公民身份证号码有效性验证
2017/02/20 Javascript
javascript 动态生成css代码的两种方法
2017/03/17 Javascript
react高阶组件经典应用之权限控制详解
2017/09/07 Javascript
详解vue 数据传递的方法
2018/04/19 Javascript
jQuery实现弹出层效果
2019/12/10 jQuery
Angular8 实现table表格表头固定效果
2020/01/03 Javascript
JavaScript代码简化技巧实例解析
2020/09/09 Javascript
Vue中用JSON实现刷新界面不影响倒计时
2020/10/26 Javascript
[43:58]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第二局
2016/02/27 DOTA
python 创建弹出式菜单的实现代码
2017/07/11 Python
TensorFlow损失函数专题详解
2018/04/26 Python
python2.x实现人民币转大写人民币
2018/06/20 Python
Python实现查找二叉搜索树第k大的节点功能示例
2019/01/24 Python
python+pyqt5实现图片批量缩放工具
2019/03/18 Python
python对象与json相互转换的方法
2019/05/07 Python
Python3.7 读取音频根据文件名生成脚本的代码
2020/04/07 Python
python+django+selenium搭建简易自动化测试
2020/08/19 Python
英国最大的独立家具零售商:Furniture Village
2016/09/06 全球购物
自考毕业自我鉴定范文
2013/10/27 职场文书
毕业典礼主持词大全
2014/03/26 职场文书
大学开学计划书
2014/04/30 职场文书
运动会400米加油稿(8篇)
2014/09/22 职场文书
正风肃纪剖析材料
2014/09/30 职场文书
2015年司法局工作总结
2015/05/22 职场文书
2016年“世界气象日”广播稿
2015/12/17 职场文书
Java集成swagger文档组件
2021/06/28 Java/Android
JS中forEach()、map()、every()、some()和filter()的用法
2022/05/11 Javascript