请列举ThreadPoolexecutor参数配置?
参考答案:
ThreadPoolExecutor
是 Java 中的一个类,它是 java.util.concurrent
包的一部分,主要用于处理并发编程。以下是 ThreadPoolExecutor
的构造函数参数:
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory,
RejectedExecutionHandler handler)
下面是每个参数的说明:
corePoolSize
(核心线程数):线程池的基本大小,即即使没有任务需要执行,线程池也会保持的线程数。除非设置了allowCoreThreadTimeOut
,否则核心线程不会因为闲置而被终止。maximumPoolSize
(最大线程数):线程池允许创建的最大线程数。当队列满了,并且已创建的线程数小于最大线程数,线程池会再创建新的线程执行任务。keepAliveTime
(保持存活时间):当线程数大于核心线程数时,这是多余空闲线程在终止前等待新任务的最长时间。unit
(时间单位):keepAliveTime
的时间单位,如TimeUnit.SECONDS
表示秒。workQueue
(工作队列):用于保存待执行的任务的阻塞队列。这个队列的选择对于性能至关重要,因为它会影响线程池的行为。常见的类型有ArrayBlockingQueue
,LinkedBlockingQueue
,SynchronousQueue
等。threadFactory
(线程工厂):用于创建新线程的工厂,可以通过这个工厂给每个新创建的线程设置更有意义的名字,或者实现自定义的线程创建逻辑。如果未提供,则使用默认工厂。handler
(拒绝策略):当任务无法被处理时(例如,当队列已满并且线程池已达到最大线程数),就会使用此策略来处理任务。常见的拒绝策略有AbortPolicy
,CallerRunsPolicy
,DiscardOldestPolicy
,DiscardPolicy
等。
注意,在创建 ThreadPoolExecutor
实例时,你需要提供上述所有参数。然而,如果你只是想使用默认的拒绝策略和线程工厂,那么你可以使用 Executors
工具类中的工厂方法(如 newFixedThreadPool
,newCachedThreadPool
等),这些方法会为你提供合理的默认值。