java ThreadPoolExecutor构造函数各个参数的意义,以及推荐值

ThreadPoolExecutor 构造函数有以下 7 个参数:

corePoolSize:指定线程池的核心线程数,即线程池中能同时执行的最大线程数。默认情况下,线程池不会立即创建核心线程,而是在有任务提交时才创建,但如果调用 prestartCoreThread 方法,线程池则会在开始执行任务之前立即创建所有核心线程。建议值是 CPU数量 + 1。

maximumPoolSize:指定线程池的最大线程数,即线程池中最多能创建的线程数。当任务队列满时,线程池会继续创建新的线程,直到线程数达到了 maximumPoolSize,此时无法再创建新的线程。建议值是 CPU数量 * 2。

keepAliveTime:指定非核心线程的闲置超时时间,即线程池中的空闲线程在空闲时间超过 keepAliveTime 后会被销毁。这个时间只对非核心线程生效。建议值是 60 秒,或者根据实际任务运行时间进行调整。

unit:表示 keepAliveTime 参数的时间单位,可以选择 TimeUnit.MILLISECONDS(毫秒)、TimeUnit.SECONDS(秒)、TimeUnit.MINUTES(分钟)等。

workQueue:指定用来保存任务的阻塞队列。常用的有 ArrayBlockingQueue、LinkedBlockingQueue、SynchronousQueue 等。建议使用 LinkedBlockingQueue。

threadFactory:指定创建线程的工厂类。可以使用默认的 Executors.defaultThreadFactory() 方法,也可以自定义线程工厂类。

handler:指定当线程池和任务队列都已经达到上限,无法再提交新的任务时的处理策略。常用的有 ThreadPoolExecutor.AbortPolicy(抛出异常)、ThreadPoolExecutor.DiscardPolicy(直接丢弃任务)、ThreadPoolExecutor.CallerRunsPolicy(在调用者线程中运行任务)等。建议使用 ThreadPoolExecutor.CallerRunsPolicy。
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值