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利用redis、Redisson处理并发问题的操作
Jun 18 Java/Android
使用feign服务调用添加Header参数
Jun 23 Java/Android
解决Swagger2返回map复杂结构不能解析的问题
Jul 02 Java/Android
用Java实现简单计算器功能
Jul 21 Java/Android
idea 在springboot中使用lombok插件的方法
Aug 02 Java/Android
Java虚拟机内存结构及编码实战分享
Apr 07 Java/Android
java高级用法JNA强大的Memory和Pointer
Apr 19 Java/Android
Android开发之底部导航栏的快速实现
Apr 28 Java/Android
Android Studio实现带三角函数对数运算功能的高级计算器
May 20 Java/Android
详解Flutter自定义应用程序内键盘的实现方法
Jun 14 Java/Android
SpringBoot详解执行过程
Jul 15 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
Protoss魔法科技
2020/03/14 星际争霸
PHP.MVC的模板标签系统(五)
2006/09/05 PHP
PHP 的 __FILE__ 常量
2007/01/15 PHP
phpExcel中文帮助手册之常用功能指南
2014/08/18 PHP
mysql desc(DESCRIBE)命令实例讲解
2016/09/24 PHP
js jquery ajax的几种用法总结(及优缺点介绍)
2014/01/28 Javascript
jquery.mobile 共同布局遇到的问题小结
2015/02/10 Javascript
JavaScript实现向OL列表内动态添加LI元素的方法
2015/03/21 Javascript
javascript生成不重复的随机数
2015/07/17 Javascript
jQuery如何使用自动触发事件trigger
2015/11/29 Javascript
利用jquery制作滚动到指定位置触发动画
2016/03/26 Javascript
jQuery简单创建节点的方法
2016/09/09 Javascript
对javascript继承的理解
2016/10/11 Javascript
js实现手机拍照上传功能
2017/01/17 Javascript
nodejs个人博客开发第三步 载入页面
2017/04/12 NodeJs
nodejs制作爬虫实现批量下载图片
2017/05/19 NodeJs
layui框架中layer父子页面交互的方法分析
2017/11/15 Javascript
详解vue-cli中模拟数据的两种方法
2018/07/03 Javascript
JavaScript运行机制实例分析
2020/04/11 Javascript
[03:22]DAC最前线(第二期)—DOTA2亚洲邀请赛主赛场周边及线路探访
2015/01/24 DOTA
[04:45]上海特级锦标赛主赛事第三日TOP10
2016/03/05 DOTA
pycharm+PyQt5+python最新开发环境配置(踩坑)
2019/02/11 Python
Python 动态导入对象,importlib.import_module()的使用方法
2019/08/28 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
flask框架蓝图和子域名配置详解
2020/01/25 Python
Python tkinter 下拉日历控件代码
2020/03/04 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
2020/08/04 Python
详解python with 上下文管理器
2020/09/02 Python
建筑总经理岗位职责
2014/02/02 职场文书
学术诚信承诺书
2014/05/26 职场文书
教师党员整改措施
2014/10/24 职场文书
担保贷款承诺书
2015/04/30 职场文书
上课迟到检讨书范文
2015/05/06 职场文书
生日赠语
2015/06/23 职场文书
创业计划书之青年旅馆
2019/09/23 职场文书
pytorch显存一直变大的解决方案
2021/04/08 Python