此前在项目中有如下场景:可同时开启多个任务,但要控制同时并发的任务数。
这种场景刚好可借用ThreadPoolExecutor阻塞队列线程池来实现,先来看看其构造函数:
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory,
RejectedExecutionHandler handler)
- corePoolSize 线程池中持有的最小线程数
- maximumPoolSize 线程池中允许持有的最大线程数
- keepAliveTime 当线程数大于corePoolSize时,空闲线程被回收前最大存活时间
- unit 空闲线程被回收前最大存活时间的时间单位
- workQueue 请求任务运行前的缓冲队列
- threadFactory 线程工厂
- handler 线程池对拒绝任务的处理策略