面试|简述下ThreadPoolExecutor线程池创建过程以及参数含义

本文详细介绍了ThreadPoolExecutor线程池的创建过程,包括4种构造函数及其7个参数的含义:核心线程数、最大线程数、线程存活时间、时间单位、工作队列、线程工厂和拒绝策略。此外,还讨论了线程池如何创建、何时创建线程、线程存活条件以及如何存放多余任务的问题。
摘要由CSDN通过智能技术生成
0.开篇介绍

线程池是并发里面最经常使用的工具类,所以想要晋升为中级Java工程师,学好并发的前提就是学好线程池。这里会介绍关于线程池的一些内容,比如线程池的创建过程和原理,如何理解线程池的各种状态以及之间的转换,理解面试中常说的FixedThreadPool,SingleThreadExecutor,CachedThreadPool,ScheduledThreadPool四种池原理以及使用场景等等,在分析原理的过程中会给出具体的使用实例,尽量能够理解到位。

这是开篇,关于常规线程池ThreadPoolExecutor的创建过程以及各参数含义的介绍。

1.问题引入

Java语言关于线程池的类图:
threadPoolExecutor
ThreadPoolExecutor就是我们口中常说的线程池,ScheduledThreadPoolExecutor是继承自它的子类,江湖上称周期线程池,它的作用跟它的名字一样,可以周期性的执行某一个任务。这里我们重点学习ThreadPoolExecutor类,整个过程我们思考以下几个问题:

  • 线程池如何创建?
  • 线程池如何接收并执行一个或者多个任务?
  • 线程池中的线程如何创建?何时创建?存活到何时?
  • 线程池中的线程间是如何调度的?即调度机制是什么?
  • 线程池如何存放多余任务?
  • 线程池如何销毁?何时销毁?
2.ThreadPoolExecutor的4种构造函数以及7个参数介绍

在Java世界里,万物皆对象,所以线程池也抽象成一个ThreadPoolExecutor类,每需要一个线程池就可以new一个ThreadPoolExecutor对象;所以创建线程池也是通过new来实现的。JDK通过重载构造函数提供四种不同形式的构造方法:

// 构造函数A  5个参数
public ThreadPoolExecutor(int corePoolSize,
                          int maximumPoolSize,
                          long keepAliveTime,
                          TimeUnit unit,
                          BlockingQueue<Runnable> workQueue) {
   
    this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
         Executors.defaultThreadFactory(), defaultHandler);
}
// 构造函数B  6个参数
public ThreadPoolExecutor(int corePoolSize,
                          int maximumPoolSize,
                          long keepAliveTime,
                          TimeUnit unit,
                          BlockingQueue<Runn
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值