Java并发编程之Executor接口的使用

网友投稿 244 2023-01-05

Java并发编程之Executor接口的使用

一、Executor接口的理解

Executor属于java.util.concurrent包下;

Executor是任务执行机制的核心接口;

二、Executor接口的类图结构

由类图结构可知:

ThreadPoolExecutor 继承了AbstractExecutorService接口;

AbstractExecutorService接口实现了ExecutorService接口;

ExecutorService继承了Executor接口;

因此以下部分主要讲解ThreadPoolExecutor类。

三、Executor接口中常用的方法

void execute(Runnable command) 在将来的某个时间执行给定的命令。 该命令可以在一个新线程,一个合并的线程中或在调用线程中执行,由Executor实现。

四、线程池的创建分为两种方式(主要介绍通过ThreadPoolExecutor方式)

注:通过Executors类的方式创建线程池,参考lz此博文链接https://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搭配使用

aCTXGEXL 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() http://{

@Override

public void run() {

System.out.println(Thread.currentThread().getName());

try {

Thread.sleep(1000);

System.out.println("睡眠一秒钟");

} catch (InterruptedException e) {

e.printStackTrace();

}

}

});

}

}

}

输出结果如下图

结论:无论是创建何种类型线程池(newFixedThreadPool、newSingleThreadExecutor、newCachedThreadPool等等),均会调用ThreadPoolExecutor构造函数。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:获取一个网站的api接口(怎么获取一个网站的api)
下一篇:尚程快递物流查询单号(尚亿物流运单号查询)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~