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实战之用Swing实现通讯录管理系统
Jun 13 Java/Android
分析设计模式之模板方法Java实现
Jun 23 Java/Android
mybatis 解决从列名到属性名的自动映射失败问题
Jun 30 Java/Android
新手初学Java网络编程
Jul 07 Java/Android
详细了解java监听器和过滤器
Jul 09 Java/Android
SpringMVC 整合SSM框架详解
Aug 30 Java/Android
Java 超详细讲解设计模式之中的抽象工厂模式
Mar 25 Java/Android
mapstruct的用法之qualifiedByName示例详解
Apr 06 Java/Android
教你在 Java 中实现 Dijkstra 最短路算法的方法
Apr 08 Java/Android
Spring Boot配合PageHelper优化大表查询数据分页
Apr 20 Java/Android
详解Android中的TimePickerView(时间选择器)的用法
Apr 30 Java/Android
Android开发手册自定义Switch开关按钮控件
Jun 10 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下escape解码函数的实现方法
2010/08/08 PHP
CodeIgniter针对数据库的连接、配置及使用方法
2016/03/03 PHP
php实现留言板功能(会话控制)
2017/05/23 PHP
aspx中利用js实现确认删除代码
2010/07/22 Javascript
js判断鼠标同时离开两个div的思路及代码
2013/05/31 Javascript
JavaScript调用客户端的可执行文件(示例代码)
2013/11/28 Javascript
详谈javascript异步编程
2016/02/21 Javascript
JavaScript中闭包的写法和作用详解
2016/06/29 Javascript
自己封装的一个原生JS拖动方法(推荐)
2016/11/22 Javascript
浅谈jQuery before和insertBefore的区别
2016/12/04 Javascript
Bootstrap中glyphicons-halflings-regular.woff字体报404错notfound的解决方法
2017/01/19 Javascript
JavaScript函数式编程(Functional Programming)声明式与命令式实例分析
2019/05/21 Javascript
mpvue微信小程序的接口请求fly全局拦截代码实例
2019/11/13 Javascript
[01:02:25]2014 DOTA2华西杯精英邀请赛 5 24 iG VS DK
2014/05/26 DOTA
[01:01:18]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#2COL VS LGD
2016/03/03 DOTA
Python模糊查询本地文件夹去除文件后缀的实例(7行代码)
2017/11/09 Python
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
2018/04/17 Python
Python测试线程应用程序过程解析
2019/12/31 Python
Django 允许局域网中的机器访问你的主机操作
2020/05/13 Python
python中有函数重载吗
2020/05/28 Python
Python描述数据结构学习之哈夫曼树篇
2020/09/07 Python
python开发一个解析protobuf文件的简单编译器
2020/11/17 Python
针对HTML5的Web Worker使用攻略
2015/07/12 HTML / CSS
英国百安居装饰建材网上超市:B&Q
2016/09/13 全球购物
韩国女装NO.1网店:STYLENANDA
2016/09/16 全球购物
Deux par Deux官方网站:设计师童装
2020/01/03 全球购物
手机业务员岗位职责
2013/12/13 职场文书
星级党支部申报材料
2014/05/31 职场文书
社区巾帼文明岗事迹材料
2014/06/03 职场文书
小学教师暑期培训方案
2014/08/28 职场文书
大学生个人简历自我评价
2015/03/11 职场文书
酒店总经理岗位职责
2015/04/01 职场文书
2015年机关纠风工作总结
2015/05/15 职场文书
2015年社区居委会工作总结
2015/05/18 职场文书
SpringBoot 拦截器妙用你真的了解吗
2021/07/01 Java/Android
Python中super().__init__()测试以及理解
2021/12/06 Python