ThreadPoolExecutor基本介绍+简单案例

本文介绍了ThreadPoolExecutor的构造函数、参数解释,并通过案例分析深入理解其工作原理。重点讨论了核心线程数、最大线程数、存活时间、拒绝策略等关键参数,以及使用LinkedBlockingDeque作为工作队列的选择。最后,展示了线程池默认的AbortPolicy拒绝策略的实例应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

在实际开发中,线程池的创建不能使用Exectors去创建线程池,而是采用最原始的ThreadPoolExecutor来创建线程池,这样可以让编写人员更加明确线程池的运行规则,避免不必要的错误。下面我们就来看看ThreadPoolExecutor的构造参数以及它们的作用。


一、构造函数

ThreadPoolExecutor一共有四种有参构造,下面只给出参数最全的构造函数

ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, 
                   long keepAliveTime, TimeUnit unit,
                   BlockingQueue<Runnable> workQueue,
                   ThreadFactory threadFactory, 
                   RejectedExecutionHandler handler) 

二、参数解释

  • corePoolSize:即使空闲时仍保留在池中的线程数(核心线程数)
  • maximumPoolSize:池中允许的最大线程数(核心线程数+救急线程数)
    注:救急线程是在任务数大于核心线程数时创建的线程,用于救急,用完以后过指定时间自动销毁
  • keepAliveTime:当线程数大于内核时,这是多余的空闲线程在终止前等待新任务的最大时间。
  • unit:keepAliveTime参数的时间单位
  • workQueue:用于在执行任务之前使用的队列。 这个队列将仅保存execute方法提交的Runnable任务。
  • threadFactory:执行程序创建新线程时使用的工厂
  • handler:达到线程限制和队列容量时,执行的拒绝策略

三、案例分析

  • 自定义Runnable实现类
    class MyRunnable implements Runnable {
   

        @Override
          public void run() {
   
        try {
   
            Thread.sleep(1);
        } 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值