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 相关文章推荐
SpringCloud Alibaba 基本开发框架搭建过程
Jun 13 Java/Android
Spring Boot 实现敏感词及特殊字符过滤处理
Jun 29 Java/Android
Spring mvc是如何实现与数据库的前后端的连接操作的?
Jun 30 Java/Android
JavaWeb 入门:Hello Servlet
Jul 16 Java/Android
SpringBoot+VUE实现数据表格的实战
Aug 02 Java/Android
java代码实现空间切割
Jan 18 Java/Android
Java中的随机数Random
Mar 17 Java/Android
Spring this调用当前类方法无法拦截的示例代码
Mar 20 Java/Android
Android Flutter实现图片滑动切换效果
Apr 07 Java/Android
解决Springboot PostMapping无法获取数据的问题
May 06 Java/Android
解决spring.thymeleaf.cache=false不起作用的问题
Jun 10 Java/Android
Java Spring读取和存储详细操作
Aug 05 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
windows下zendframework项目环境搭建(通过命令行配置)
2012/12/06 PHP
php模拟ping命令(php exec函数的使用方法)
2013/10/25 PHP
Yii框架关联查询with用法分析
2014/12/02 PHP
PHP实现的各类hash算法长度及性能测试实例
2017/08/27 PHP
Laravel-admin之修改操作日志的方法
2019/09/30 PHP
动态调用css文件——jquery的应用
2007/02/20 Javascript
遍历DOM对象内的元素属性示例代码
2014/02/08 Javascript
JavaScript中setFullYear()方法的使用详解
2015/06/11 Javascript
JSON与XML优缺点对比分析
2015/07/17 Javascript
nodejs初步体验篇
2015/11/23 NodeJs
第一次接触神奇的Bootstrap表单
2016/07/27 Javascript
JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法
2016/08/19 Javascript
在React中如何优雅的处理事件响应详解
2017/07/24 Javascript
详解Vue微信授权登录前后端分离较为优雅的解决方案
2018/06/29 Javascript
详解Angular如何正确的操作DOM
2018/07/06 Javascript
Selenium执行JavaScript脚本的方法示例
2020/12/31 Javascript
[00:33]DOTA2上海特级锦标赛 CDEC战队宣传片
2016/03/04 DOTA
[04:49]期待西雅图之战 2016国际邀请赛中国区预选赛WINGS战队赛后采访
2016/06/29 DOTA
Django 前后台的数据传递的方法
2017/08/08 Python
python操作excel的方法(xlsxwriter包的使用)
2018/06/11 Python
python实现决策树分类(2)
2018/08/30 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
2020/11/28 Python
HTML5仿手机微信聊天界面
2016/03/18 HTML / CSS
详解基于canvas的视频遮罩插件
2018/01/04 HTML / CSS
世界顶级俱乐部的官方球衣和套装:Subside Sports
2018/04/22 全球购物
中文专业毕业生自荐书范文
2014/01/04 职场文书
大型车展策划方案
2014/02/01 职场文书
保护环境的建议书
2014/03/12 职场文书
语文高效课堂实施方案
2014/05/03 职场文书
计算机相关专业自荐信
2014/07/02 职场文书
大学生自我评价200字(4篇)
2014/09/17 职场文书
小学趣味运动会加油稿
2014/09/25 职场文书
幼儿教师年度个人总结
2015/02/05 职场文书
Mysql Show Profile
2021/04/05 MySQL
PostgreSQL将数据加载到buffer cache中操作方法
2021/04/16 PostgreSQL
MySQL分区表实现按月份归类
2021/11/01 MySQL