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 相关文章推荐
分析Netty直接内存原理及应用
Jun 14 Java/Android
SpringBoot2 参数管理实践之入参出参与校验的方式
Jun 16 Java/Android
Spring Boot 启动、停止、重启、状态脚本
Jun 26 Java/Android
Java基础之线程锁相关知识总结
Jun 30 Java/Android
Java反应式框架Reactor中的Mono和Flux
Jul 25 Java/Android
logback 实现给变量指定默认值
Aug 30 Java/Android
spring cloud 配置中心native配置方式
Sep 25 Java/Android
springboot中rabbitmq实现消息可靠性机制详解
Sep 25 Java/Android
Spring Security使用单点登录的权限功能
Apr 03 Java/Android
Flutter Navigator 实现路由传递参数
Apr 22 Java/Android
Java实现字符串转为驼峰格式的方法详解
Jul 07 Java/Android
app场景下uniapp的扫码记录
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
解析VS2010利用VS.PHP插件调试PHP的方法
2013/07/19 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
Js 订制自己的AlertBox(信息提示框)
2009/01/09 Javascript
javascript Ext JS 状态默认存储时间
2009/02/15 Javascript
Firefox window.close()的使用注意事项
2009/04/11 Javascript
关于Aptana Studio生成自动备份文件的解决办法
2009/12/23 Javascript
js 关于=+与+=日期函数使用说明(赋值运算符)
2011/11/15 Javascript
关于jQuery UI 使用心得及技巧
2012/10/10 Javascript
AngularJS + Node.js + MongoDB开发的基于高德地图位置的通讯录
2015/01/02 Javascript
jQuery实现仿腾讯视频列表分页效果的方法
2015/08/07 Javascript
JS延时器提示框的应用实例代码解析
2016/04/27 Javascript
非常实用的js验证框架实现源码 附原理方法
2016/06/08 Javascript
Vue加载组件、动态加载组件的几种方式
2018/08/31 Javascript
JS实现的字符串数组去重功能小结
2019/06/17 Javascript
vue iview多张图片大图预览、缩放翻转
2019/07/13 Javascript
浅谈Node新版本13.2.0正式支持ES Modules特性
2019/11/25 Javascript
js实现带积分弹球小游戏
2020/07/21 Javascript
Python生成pdf文件的方法
2014/08/04 Python
在Python中操作时间之mktime()方法的使用教程
2015/05/22 Python
Python网络爬虫项目:内容提取器的定义
2016/10/25 Python
Python获取网段内ping通IP的方法
2019/01/31 Python
Python3.5迭代器与生成器用法实例分析
2019/04/30 Python
pytorch 共享参数的示例
2019/08/17 Python
Python unittest框架操作实例解析
2020/04/13 Python
Python如何在windows环境安装pip及rarfile
2020/06/15 Python
CSS3系列教程:背景图片(背景大小和多背景图) 应用说明
2012/12/19 HTML / CSS
详解CSS3中Media Queries的相关使用
2015/07/17 HTML / CSS
美国男士和女士奢侈品折扣手表购物网站:Certified Watch Store
2018/06/13 全球购物
美国波西米亚风格精品店:South Moon Under
2019/10/26 全球购物
拾金不昧的表扬信
2014/01/16 职场文书
企业安全标语
2014/06/07 职场文书
搞笑的爱情检讨书
2014/10/01 职场文书
地方白酒代理协议书
2014/10/25 职场文书
幼儿园卫生保健制度
2015/08/05 职场文书
详细了解MVC+proxy
2021/07/09 Java/Android
Nginx文件已经存在全局反向代理问题排查记录
2022/07/15 Servers