线程池的核心参数有哪些???

本文详细介绍了线程池的核心参数,包括核心线程数、最大线程数、线程存活时间、任务队列、线程工厂和拒绝策略,强调了合理配置这些参数对提升性能和系统响应能力的重要性。
摘要由CSDN通过智能技术生成

 

线程池的核心参数包括以下七个:

  1. corePoolSize: 这是线程池中的核心线程数,即池中会保留的最少线程数。当提交任务时,如果当前线程数小于核心线程数,线程池会创建新的线程来执行任务。如果当前线程数等于或大于核心线程数,则任务会被放入任务队列等待执行,除非队列已满。

  2. maximumPoolSize: 表示线程池允许同时存在的最大线程数,包括核心线程和非核心线程(有时称为“救急”线程或“临时”线程)。当任务队列已满且仍有新任务提交时,线程池会尝试创建新的线程来执行任务,直到达到maximumPoolSize。此值必须大于等于corePoolSize

  3. keepAliveTime: 定义了非核心线程在空闲状态下等待新任务的最长时间。当线程池中的线程数超过corePoolSize,且有线程空闲时间达到keepAliveTime时,这些空闲线程会被终止,直到线程池大小回落到corePoolSize。单位由unit参数指定。

  4. unit: keepAliveTime的时间单位,常见的如TimeUnit.SECONDSTimeUnit.MILLISECONDS等。

  5. workQueue: 任务队列,用于存储待执行的任务。当核心线程都处于忙碌状态时,新提交的任务会被放入此队列中等待执行。通常使用阻塞队列(如ArrayBlockingQueueLinkedBlockingQueueSynchronousQueue等),以确保线程安全和任务调度的协调。

  6. threadFactory: 线程工厂,用于创建新线程。通过自定义线程工厂,可以设置线程的优先级、命名规则、是否为守护线程等属性,以便更好地管理和识别线程池中的线程。

  7. handler: 拒绝策略,当线程池和任务队列均无法接纳新任务时(即线程数已经达到maximumPoolSize,且任务队列已满),触发的拒绝策略。常见的拒绝策略有:

    • AbortPolicy(默认):抛出RejectedExecutionException异常。
    • CallerRunsPolicy:调用方所在的线程自行执行被拒绝的任务。
    • DiscardPolicy:默默地丢弃被拒绝的任务。
    • DiscardOldestPolicy:移除任务队列中最旧的任务(最先入队的未开始执行的任务),然后尝试重新提交当前被拒绝的任务。

这些核心参数可以通过构造函数ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler)来设置。正确配置这些参数对于优化线程池的性能、资源利用率以及系统整体响应能力至关重要。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值