线程池的参数及配置

写在开头:
个人认为配置线程池的参数要根据实际的生产环境进行调优,并没有固定的参数配置公式,只有近似的公式然后慢慢调

获取本机的核数代码 在没有界面的机器上是必须要用到代码查看的 所以很重要

System.out.println(Runtime.getRuntime().availableProcessors());

线程池的参数:
corepoolsize : 线程池的基本线程数,表示想达到的线程数量,线程池会尽量把线程池的数量维持在这个值的上下保持稳定。
maximumpoolsize: 最大的线程数 容许数
keepAliveTime: 最大线程数到达这个时间就失效销毁
unit : keepAliveTime的单位
workQueue: 阻塞队列 当线程数达到最大值就放入该队列
ThreadFactory:线程工厂,主要用来统一创建线程;
header :拒绝策略 (4种 | )(maximumpoolsize+workQueue)大于这个就拒绝。

ThreadPoolExecutor.AbortPolicy:丢弃任务并抛出RejectedExecutionException异常。
ThreadPoolExecutor.DiscardPolicy:也是丢弃任务,但是不抛出异常。
ThreadPoolExecutor.DiscardOldestPolicy:丢弃队列最前面的任务,然后重新尝试执行任务(重复此过程)
ThreadPoolExecutor.CallerRunsPolicy:由调用线程处理该任务(main线程去执行)

配置参数:
CPU密集型 CPU的核数+1
IO密集型 一般配置 2*CPU的核数
参考公式(某大厂配置):
CPU核数/(1-阻塞系数) 阻塞系数在0.8~0.9之间
比如8核CPU 8/(1-0.9) = 80个线程数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值