java8中 ThreadPoolExecutor有哪些参数

ThreadPoolExecutor 是 Java 中一个非常灵活和强大的线程池工具,允许你精确控制线程池的行为。在 Java 8 中,ThreadPoolExecutor 的构造函数主要有以下几种重载形式,但它们通常都包含一组核心的参数,这些参数用于配置线程池的行为:

  1. 核心线程数 (corePoolSize):
    • 线程池的基本大小,即在没有任务需要执行时线程池的大小。
      即使线程是空闲的,核心线程也不会被终止,除非设置了 allowCoreThreadTimeOut 为 true。
  2. 最大线程数 (maximumPoolSize):
    • 线程池允许的最大线程数。当工作队列已满,且当前线程数小于 maximumPoolSize 时,线程池会创建新的线程来处理任务。
  3. 存活时间 (keepAliveTime):
    • 当线程数大于核心线程数时,这是多余的空闲线程在终止前等待新任务的最长时间。
    • 时间单位是 TimeUnit,例如 TimeUnit.SECONDS。
  4. 时间单位 (TimeUnit):
    • 用于 keepAliveTime 的时间单位,如 SECONDS, MILLISECONDS 等。
  5. 工作队列 (BlockingQueue):
    • 用于保存待执行的任务的队列。
    • 当提交的任务数超过 corePoolSize 时,新任务会被放在队列中等待执行。
    • 常用的队列类型有 ArrayBlockingQueue, LinkedBlockingQueue, SynchronousQueue 等。
  6. 线程工厂 (ThreadFactory):
    • 用于创建新线程的工厂。
    • 可以自定义线程名、优先级、是否是守护线程等属性。
    • 默认情况下,使用 Executors.defaultThreadFactory() 创建的线程工厂。
  7. 拒绝策略 (RejectedExecutionHandler):
    • 当线程池无法处理新任务时(例如,因为线程池已关闭或已达到 maximumPoolSize,且工作队列已满),将使用此策略处理任务。
    • Java 提供了几种内置的策略,如 AbortPolicy, CallerRunsPolicy, DiscardOldestPolicy, DiscardPolicy,也可以自定义。

下面是一个简单的 ThreadPoolExecutor 构造函数的例子:

ThreadPoolExecutor executor = new ThreadPoolExecutor(  
    5,                   // corePoolSize  
    10,                  // maximumPoolSize  
    60L,                 // keepAliveTime  
    TimeUnit.SECONDS,   // TimeUnit  
    new LinkedBlockingQueue<>(), // workQueue  
    Executors.defaultThreadFactory(), // threadFactory  
    new ThreadPoolExecutor.AbortPolicy() // handler  
);

在这个例子中,线程池的核心线程数是 5,最大线程数是 10,空闲线程的存活时间是 60 秒,使用 LinkedBlockingQueue 作为工作队列,使用默认的线程工厂,以及 AbortPolicy 作为拒绝策略。你可以根据需要调整这些参数。

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值