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 相关文章推荐
解决Maven项目中 Invalid bound statement 无效的绑定问题
Jun 15 Java/Android
详解Java实现设计模式之责任链模式
Jun 23 Java/Android
Java中PriorityQueue实现最小堆和最大堆的用法
Jun 27 Java/Android
Java中多线程下载图片并压缩能提高效率吗
Jul 01 Java/Android
Java如何实现通过键盘输入一个数组
Feb 15 Java/Android
Java设计模式之享元模式示例详解
Mar 03 Java/Android
Android开发之WECHAT微信小程序路由跳转的两种形式
Apr 12 Java/Android
详细介绍Java中的CyclicBarrier
Apr 13 Java/Android
Java死锁的排查
May 11 Java/Android
一文了解Java动态代理的原理及实现
Jul 07 Java/Android
Java使用HttpClient实现文件下载
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
某大型网络公司应聘时的笔试题目附答案
2008/03/27 PHP
PHP session有效期问题
2009/04/26 PHP
Discuz 6.0+ 批量注册用户名
2009/09/13 PHP
学习php设计模式 php实现桥梁模式(bridge)
2015/12/07 PHP
PDO::rollBack讲解
2019/01/29 PHP
js removeChild 障眼法 可能出现的错误
2009/10/06 Javascript
js跟随滚动条滚动浮动代码
2009/12/31 Javascript
ajax 缓存 问题 requestheader
2010/08/01 Javascript
js中的异常处理try...catch使用介绍
2013/09/21 Javascript
JavaScript判断textarea值是否为空并给出相应提示
2014/09/04 Javascript
JQuery中属性过滤选择器用法实例分析
2015/05/18 Javascript
json与jsonp知识小结(推荐)
2016/08/16 Javascript
Vue.js快速入门教程
2016/09/07 Javascript
javascript中setAttribute兼容性用法分析
2016/12/12 Javascript
js实现无缝滚动图
2017/02/22 Javascript
AngularJS 单选框及多选框的双向动态绑定
2017/04/20 Javascript
Vue项目中引入外部文件的方法(css、js、less)
2017/07/24 Javascript
Javascript中prototype与__proto__的关系详解
2018/03/11 Javascript
layui点击导航栏刷新tab页的示例代码
2018/08/14 Javascript
vue 指令之气泡提示效果的实现代码
2018/10/18 Javascript
JS实现的字符串数组去重功能小结
2019/06/17 Javascript
Vue的自定义组件不能使用click方法的解决
2020/07/28 Javascript
JS中队列和双端队列实现及应用详解
2020/09/29 Javascript
nuxt 服务器渲染动态设置 title和seo关键字的操作
2020/11/05 Javascript
[01:05:40]VG vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python局部赋值的规则
2013/03/07 Python
快速了解python leveldb
2018/01/18 Python
在Python中给Nan值更改为0的方法
2018/10/30 Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
2019/08/06 Python
Python轻量级web框架bottle使用方法解析
2020/06/13 Python
荷兰鞋类购物网站:Donelli
2019/05/24 全球购物
交通事故委托书范本(2篇)
2014/09/21 职场文书
2014年信贷员工作总结
2014/11/18 职场文书
授权委托书
2015/01/28 职场文书
python process模块的使用简介
2021/05/14 Python
python操作xlsx格式文件并读取
2021/06/02 Python