推荐答案
在 Java 中,线程池的核心参数主要包括以下几个:
- corePoolSize:线程池的核心线程数,即线程池中保持存活的线程数量。
- maximumPoolSize:线程池中允许的最大线程数。
- keepAliveTime:当线程数超过核心线程数时,多余的空闲线程在终止前等待新任务的最长时间。
- unit:
keepAliveTime参数的时间单位。 - workQueue:用于保存等待执行的任务的阻塞队列。
- threadFactory:用于创建新线程的工厂。
- 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。