Java并发编程之Executor接口的使用
一、Executor接口的理解
- Executor属于java.util.concurrent包下;
- Executor是任务执行机制的核心接口;
文章图片
【Java并发编程之Executor接口的使用】由类图结构可知:
- ThreadPoolExecutor 继承了AbstractExecutorService接口;
- AbstractExecutorService接口实现了ExecutorService接口;
- ExecutorService继承了Executor接口;
- 因此以下部分主要讲解ThreadPoolExecutor类。
四、线程池的创建分为两种方式(主要介绍通过ThreadPoolExecutor方式) 注:通过Executors类的方式创建线程池,参考lz此博文链接https://www.jb51.net/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 线程池饱和策略
代码
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() {@Overridepublic void run() {System.out.println(Thread.currentThread().getName()); try {Thread.sleep(1000); System.out.println("睡眠一秒钟"); } catch (InterruptedException e) {e.printStackTrace(); }}}); }}}
输出结果如下图
文章图片
结论:无论是创建何种类型线程池(newFixedThreadPool、newSingleThreadExecutor、newCachedThreadPool等等),均会调用ThreadPoolExecutor构造函数。
文章图片
文章图片
到此这篇关于Java并发编程之Executor接口的使用的文章就介绍到这了,更多相关Java Executor接口内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 事件代理
- Java|Java OpenCV图像处理之SIFT角点检测详解
- java中如何实现重建二叉树
- 数组常用方法一
- 【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题
- python青少年编程比赛_第十一届蓝桥杯大赛青少年创意编程组比赛细则
- Java|Java基础——数组
- RxJava|RxJava 在Android项目中的使用(一)
- java之static、static|java之static、static final、final的区别与应用