线程相关内容总结

本文总结了Java线程池的关键参数,如corePoolSize、maximumPoolSize、keepAliveTime等,以及线程池的工作流程。介绍了常用阻塞队列如ArrayBlockingQueue、LinkedBlockingQueue、SynchronousQueue等的特点和应用场景。还探讨了线程状态及其流转,并讨论了Spring中ThreadPoolTaskExecutor的配置和拒绝策略。
摘要由CSDN通过智能技术生成

线程相关内容总结

 

ThreadPoolExecutor线程池的参数

1)corePoolSize

代表核心线程数。每当新的任务提交过来的时候,线程池就会创建一个核心线程来执行这个任务,即使已经有其他的核心线程处于空闲状态

 而当需要执行的任务数大于核心线程数时,将不再创建新的核心线程。

2)maximumPoolSize

代表线程所允许的最大数量。即,当阻塞队列已满的时候,并且已经创建的线程数小于最大线程数,则会创建新的线程去执行任务。

3)keepAliveTime

代表线程空闲后,保持存活的时间,当allowCoreThreadTimeOut = true时,超过一定的时间没有任务执行,线程就会自动销毁。

4)unit

代表描述存活时间的时间单位。

5)workQueue

代表阻塞队列,存储所有等待执行的任务。

6)threadFactory

代表用来创建线程的工厂。可以自定义一个工厂,传参进来。如果不指定的话,就会使用默认工厂(Executors类里边的 DefaultThreadFactory)。

7)handler

代表拒绝策略,当阻塞队列和线程池都达到了最大线程数,使用的处理策略。

一共有四种策略可供选择,分别对应四个内部类:

  • AbortPolicy:直接拒绝,并抛出异常,这也是默认的策略。

  • CallerRunsPolicy:直接让调用execute方法的线程去执行此任务。

  • DiscardOldestPolicy:丢弃最老的未处理的任务,然后

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值