线程池各个参数设置说明

1. corePoolSize 核心线程数

       看处理业务属于IO密集型还是属于cpu密集型
       IO密集型:  通常设置为N+1,还有一个计算公式:线程数 = cpu数*(线程等待时间+cpu运行时间/线程总的处理时间)  但是由于服务器除了这个服务可能还部署有其他服务,或者本身服务器需要占用一些cpu资源,所以正常情况我们需要进行压测,压测一个合理值m,再根据实际情况,如果业务属于长期高负荷,可以直接设置为m,最大线程数也设置为m;如何只是爆发性的高负荷,可以设置为比m少一点的数,最大线程数设置为m

2. maxPoolSize 最大线程数

参照核心线程数设置说明

3. 队列
一般用的是linkedBlockQueue,队列进出比较方便
任务队列长度一般设计为:核心线程数单个任务执行时间2即可;例如上面的场景中;核心线程数设计为10.单个任务执行时间为0.1秒,则队列长度可以设计为200;

4. keepalivetime
5. 拒绝策略
6. threadFactory 线程创建工厂
7. unit 空闲时间参数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
线程池参数设置涉及到线程数量、任务队列大小以及拒绝策略等几个关键参数。以下是线程池参数设置的一些准则: 1. 根据系统资源和任务特性合理设置线程数量:线程数量过多会导致资源浪费,过少则可能无法充分利用系统资源。可以根据系统的 CPU 核数和任务类型来决定线程数量,一般推荐设置为 CPU 核数的倍数。 2. 设置合适的任务队列大小:任务队列用于存放等待执行的任务,如果队列太小,可能导致任务被丢弃;如果队列太大,则可能导致内存占用过高。根据任务的平均处理时间、任务到达率和系统的可接受负载情况来设置任务队列大小。 3. 选择适当的拒绝策略:当任务队列已满时,新任务无法加入队列。常见的拒绝策略有:抛出异常、直接丢弃、丢弃最旧的任务或者调用者自己处理。根据业务需求和系统稳定性要求来选择合适的拒绝策略。 4. 考虑任务执行时间:如果任务执行时间较长,可能会导致线程池中的线程长时间被占用,无法及时响应新的任务。可以根据任务执行时间和任务到达率来合理设置线程数量,以充分利用系统资源。 5. 动态调整参数:根据实际情况,动态调整线程池参数是很重要的。可以通过监控系统负载、任务队列长度等指标,实时调整线程数量和任务队列大小,以适应系统的变化。 总之,线程池参数设置需要考虑系统资源、任务特性和业务需求等因素,合理设置参数可以提高系统性能和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值