Java 面试题
目录

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

· 约 2 分钟读完 · 第 70 / 274 章

推荐答案

在 Java 中,线程池的核心参数主要包括以下几个:

  1. corePoolSize:线程池的核心线程数,即线程池中保持存活的线程数量。
  2. maximumPoolSize:线程池中允许的最大线程数。
  3. keepAliveTime:当线程数超过核心线程数时,多余的空闲线程在终止前等待新任务的最长时间。
  4. unit:keepAliveTime 参数的时间单位。
  5. workQueue:用于保存等待执行的任务的阻塞队列。
  6. threadFactory:用于创建新线程的工厂。
  7. handler:当线程池和队列都满了时,用于处理新提交的任务的拒绝策略。

本题详细解读

corePoolSize

corePoolSize 是线程池中保持存活的线程数量。即使这些线程是空闲的,它们也不会被销毁,除非设置了 allowCoreThreadTimeOut 为 true。

maximumPoolSize

maximumPoolSize 是线程池中允许的最大线程数。当工作队列满了之后,线程池会创建新的线程,直到线程数达到 maximumPoolSize。

keepAliveTime

keepAliveTime 是当线程数超过 corePoolSize 时,多余的空闲线程在终止前等待新任务的最长时间。如果在这段时间内没有新任务,这些线程将被终止。

unit

unit 是 keepAliveTime 参数的时间单位。常用的时间单位包括 TimeUnit.MILLISECONDS、TimeUnit.SECONDS 等。

workQueue

workQueue 是用于保存等待执行的任务的阻塞队列。常见的队列类型包括 LinkedBlockingQueue、ArrayBlockingQueue、SynchronousQueue 等。

threadFactory

threadFactory 是用于创建新线程的工厂。通过自定义 threadFactory,可以设置线程的名称、优先级、是否为守护线程等属性。

handler

handler 是当线程池和队列都满了时,用于处理新提交的任务的拒绝策略。常见的拒绝策略包括 AbortPolicy、CallerRunsPolicy、DiscardPolicy 和 DiscardOldestPolicy。