7大参数自定义线程池

在实际开发中,经常会用到的就是自定义线程池,通过new ThreadPoolExecutor(…),并添加需要的参数和设置需要的值,以下是7大参数的使用方法:
1.corePoolSize:设置核心线程数量。
2.maximumPoolSize:设置最大的线程数(当线程数达到此值时就会触发)。
3.keepAliveTime:超时等待时长(当没有空闲的线程时且超过这个值的时间,就会自动关闭线程池允许的最大线程数,恢复到默认的核心线程数量)。
4.TimeUnit unit:设置keepAliveTime的时间的单位。
5.BlockingQueue workQueue:设置可等候的线程类型和数量。
6.ThreadFactory threadFactor:默认为Executors.defaultThreadFactory()。
7.RejectedExecutionHandler handler:设置当超过可容纳的线程数量时执行的拒绝策略。
四种拒绝策略:
1.new ThreadPoolExecutor.AbortPolicy():抛出异常
2.new ThreadPoolExecutor.CallerRunsPolicy():谁执行该线程的就交给该线程处理(哪里来的哪里去)
3.new ThreadPoolExecutor.DiscardPolicy():不抛出异常,丢掉任务,正常执行
4.new ThreadPoolExecutor.DiscardOldestPolicy():交给最开始运行的那个线程处理。

需要特别注意的是在面试或者在我们平时做开发时,经常要求思考一个问题,就是这个maximumPoolSize参数的值要设置为多少才是最好的,才能让我们的性能达到最优。
这里两个解决方案:
1.CPU处理型:看我们服务器提供的是几核CPU,几核我们就设置几,这样我们就可以保证该CPU能够正常处理我们的线程。
2.IO密集型:查看我们的资源消耗较大IO线程有多少个,我们的maximumPoolSize参数的值就设计为两倍。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值