线程池简介与使用

本文介绍了线程池的工作流程,包括核心线程、阻塞队列和最大线程的分配策略。当100个并发任务到来时,7个立即执行,50个进入队列,额外开启13个线程执行,剩余任务根据拒绝策略处理。同时,讲解了如何配置线程池参数以及在实际应用中如何编写异步任务。
摘要由CSDN通过智能技术生成

工作流程

运行流程:

  1. 线程池创建,准备好core数量的核心线程,准备接受任务

  2. 新的任务进来,用core准备好的空闲线程执行。

    1. 如果core线程满,就将再进来的任务放入阻塞队列中。空闲的core就会自己去阻塞队列获取任务执行
    2. 如果阻塞队列满了,就直接开新线程执行,最大只能开到max指定的数量
    3. max都执行好了。Max-core数量空闲的线程会在keepAliveTime指定的时间后自动销毁。最终保持到core大
    4. 如果线程数开到了max的数量,还有新任务进来,就会使用reject指定的拒绝策略进行处理
  3. 所有的线程创建都是由指定的factory创建的。

问题 : 一个线程池core 7, max 20,queue: 50, 100并发进来怎么分配的;

答:先有7个能直接得到执行,接下来50个进入队列排队,在多开13个继续执行。现在70个被安排上了。剩下30个默认拒绝策略。

使用

  1. 配置线程池
@Configuration
public class MyThreadConfig {
   
    @Bean
    public ThreadPoolExecutor threadPoolExecutor(ThreadPoolConfigProperties pool) {
   
        return new ThreadPoolExecutor(
            	pool.getCoreSize()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值