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内存模型之happens-before概念详解
Jun 13 Java/Android
eclipse创建项目没有dynamic web的解决方法
Jun 24 Java/Android
小程序与后端Java接口交互实现HelloWorld入门
Jul 09 Java/Android
dubbo集成zipkin获取Traceid的实现
Jul 26 Java/Android
mybatis3中@SelectProvider传递参数方式
Aug 04 Java/Android
java如何实现socket连接方法封装
Sep 25 Java/Android
JVM之方法返回地址详解
Feb 28 Java/Android
SpringBoot2零基础到精通之数据与页面响应
Mar 22 Java/Android
Java 异步任务计算FutureTask
Apr 28 Java/Android
Java中Dijkstra(迪杰斯特拉)算法
May 20 Java/Android
Android 中的类文件和类加载器详情
Jun 05 Java/Android
前端与RabbitMQ实时消息推送未读消息小红点实现示例
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 页面执行时间计算代码
2008/12/04 PHP
PHP错误提示的关闭方法详解
2013/06/23 PHP
PHP程序漏洞产生的原因分析与防范方法说明
2014/03/06 PHP
完美解决thinkphp验证码出错无法显示的方法
2014/12/09 PHP
PHP中addcslashes与stripcslashes函数用法分析
2016/01/07 PHP
微信公众号开发之文本消息自动回复php代码
2016/08/08 PHP
PHP CURL采集百度搜寻结果图片不显示问题的解决方法
2017/02/03 PHP
PHP两种实现无级递归分类的方法
2017/03/02 PHP
自适应图片大小的弹出窗口
2006/07/27 Javascript
COM中获取JavaScript数组大小的代码
2009/11/22 Javascript
JavaScript 模拟用户单击事件
2009/12/31 Javascript
深入解析contentWindow, contentDocument
2013/07/04 Javascript
js onclick事件传参讲解
2013/11/06 Javascript
node.js中Socket.IO的进阶使用技巧
2014/11/04 Javascript
JS实现在网页中弹出一个输入框的方法
2015/03/03 Javascript
手机Web APP如何实现分享多平台功能
2016/08/19 Javascript
javascript、php关键字搜索函数的使用方法
2018/05/29 Javascript
js中怎么判断两个字符串相等的实例
2019/01/17 Javascript
layer.js之回调销毁对话框的例子
2019/09/11 Javascript
node.js使用zlib模块进行数据压缩和解压操作示例
2020/02/12 Javascript
Jquery Fade用法详解
2020/11/06 jQuery
小程序实现tab标签页
2020/11/16 Javascript
pygame学习笔记(5):游戏精灵
2015/04/15 Python
解决Python字典写入文件出行首行有空格的问题
2017/09/27 Python
python对html过滤处理的方法
2018/10/21 Python
python xpath获取页面注释的方法
2019/01/14 Python
python3射线法判断点是否在多边形内
2019/06/28 Python
CSS3教程(1):什么是CSS3
2009/04/02 HTML / CSS
利用HTML5 Canvas制作键盘及鼠标动画的实例分享
2016/03/15 HTML / CSS
医疗保健专业人士购物网站:Scrubs & Beyond
2017/02/08 全球购物
Calphalon美国官网:美国顶级锅具品牌
2020/02/05 全球购物
青年教师培训方案
2014/02/06 职场文书
公司年会抽奖活动主持词
2014/03/31 职场文书
战友聚会主持词
2014/04/02 职场文书
2016国庆节67周年红领巾广播稿
2015/12/18 职场文书
Javascript webpack动态import
2022/04/19 Javascript