corePoolSize:核心线程数
maximumPoolSize:最大线程数
keepAlivedTime:线程存活时间
unit:线程存活时间单位
workQueue:阻塞队列,用来存放待处理的任务
threadFactory:线程工厂,用来创建线程池中的工作线程
handler:拒绝策略,当线程池处于满负荷状态时,无法处理后续进来的任务,便会采用拒绝策略。
参数关系详解:
首先我们创建线程会使用到线程工厂threadFactory,初始化线程数就是corePoolSize参数设置,当任务数大于核心线程数,线程工厂会继续创建线程,直至达到最大线程数maximumPoolSize,超出最大线程数的任务会放入到阻塞队列workQueue,若任务非常多,队列满了,便会触发拒绝策略handler,
拒绝策略有四种:
1,AbortPolicy:默认使用策略,直接丢弃
2,CallerRunsPolicy:只要线程池没有被shutdown(),就有提交任务的线程通过执行r.run()方法直接以普通的方法执行
3,DisCardPlicy:直接丢弃,不做任务处理
4,DisCardOldestPolicy::只要线程池没有被shutdown(),则通过e.getQueue().poll()把队列头部等待最久的任务丢弃,然后把当前任务通过execute()方法提交到阻塞队列
keepAlivedTime,线程存活时间,当任务量下降时,空闲的线程在这个时间之后将会被回收
线程池7大参数详解
最新推荐文章于 2023-04-04 22:30:38 发布