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 相关文章推荐
SpringBoot项目中控制台日志的保存配置操作
Jun 18 Java/Android
Java数据结构之链表相关知识总结
Jun 18 Java/Android
Spring boot应用启动后首次访问很慢的解决方案
Jun 23 Java/Android
Java常用函数式接口总结
Jun 29 Java/Android
实体类或对象序列化时,忽略为空属性的操作
Jun 30 Java/Android
Mybatis-plus在项目中的简单应用
Jul 01 Java/Android
dubbo服务整合zipkin详解
Jul 26 Java/Android
SpringBoot整合阿里云视频点播的过程详解
Dec 06 Java/Android
Java实现给Word文件添加文字水印
Feb 15 Java/Android
MybatisPlus EntityWrapper如何自定义SQL
Mar 22 Java/Android
SpringBoot中使用Redis作为全局锁示例过程
Mar 24 Java/Android
Spring boot实现上传文件到本地服务器
Aug 14 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
模拟OICQ的实现思路和核心程序(二)
2006/10/09 PHP
网站当前的在线人数
2006/10/09 PHP
smarty section简介与用法分析
2008/10/03 PHP
PHP获取类中常量,属性,及方法列表的方法
2009/04/09 PHP
Thinkphp将二维数组变为标签适用的一维数组方法总结
2014/10/30 PHP
codeigniter显示所有脚本执行时间的方法
2015/03/21 PHP
CentOS 上搭建 PHP7 开发测试环境
2017/02/26 PHP
CodeIgniter框架钩子机制实现方法【hooks类】
2018/08/21 PHP
jQuery结合PHP+MySQL实现二级联动下拉列表[实例]
2011/11/15 Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
2014/03/13 Javascript
jQuery截取指定长度字符串的实现原理及代码
2014/07/01 Javascript
jQuery中wrapAll()方法用法实例
2015/01/16 Javascript
Node.js操作mysql数据库增删改查
2016/03/30 Javascript
Javascript实现跨域后台设置拦截的方法详解
2017/08/04 Javascript
js模块加载方式浅析
2017/08/12 Javascript
从零开始在NPM上发布一个Vue组件的方法步骤
2018/12/20 Javascript
使用kbone解决Vue项目同时支持小程序问题
2019/11/08 Javascript
nodeJs的安装与npm全局环境变量的配置详解
2020/01/06 NodeJs
es6中使用map简化复杂条件判断操作实例详解
2020/02/19 Javascript
微信小程序淘宝首页双排图片布局排版代码(推荐)
2020/10/29 Javascript
JS获取一个字符串中指定字符串第n次出现的位置
2021/02/10 Javascript
python使用递归解决全排列数字示例
2014/02/11 Python
django 开发忘记密码通过邮箱找回功能示例
2018/04/17 Python
Python实现简单的文本相似度分析操作详解
2018/06/16 Python
详解如何管理多个Python版本和虚拟环境
2019/05/10 Python
使用django的objects.filter()方法匹配多个关键字的方法
2019/07/18 Python
centos7之Python3.74安装教程
2019/08/15 Python
用纯CSS3实现网页中常见的小箭头
2017/10/16 HTML / CSS
HTML5的语法变化介绍
2013/08/13 HTML / CSS
期末考试动员演讲稿
2014/01/10 职场文书
初中校园之声广播稿
2014/01/15 职场文书
二年级学生评语大全
2014/04/23 职场文书
作文批改评语大全
2014/04/23 职场文书
学生保证书格式
2015/02/27 职场文书
JS如何实现基于websocket的多端桥接平台
2021/05/14 Javascript
MySQL 原理优化之Group By的优化技巧
2022/08/14 MySQL