java 线程池的初始化参数解释和参数设置

4,416 阅读1分钟
public ThreadPoolExecutor(int corePoolSize,
                          int maximumPoolSize,
                          long keepAliveTime,
                          TimeUnit unit,
                          BlockingQueue<Runnable> workQueue,
                          ThreadFactory threadFactory,
                          RejectedExecutionHandler handler) 

corePoolSize:核心线程数,如果运行的线程数小于corePoolSize,则创建新线程来执行新任务,即使线程池中的其他线程是空闲的。

maximumPoolSize:最大线程数,可允许创建的线程数,corePoolSize和maximumPoolSize设置的边界自动调整线程池的大小。

corePoolSize<运行的线程数<maximumPoolSize:仅当队列满时才创建新线程。

corePoolSize=运行的线程数=maximumPoolSize:创建固定大小的线程池。

keepAliveTime:如果线程数多于corePoolSize,则这多于的线程的空闲时间超过keepAliveTime时将被终止

unit:keepAliveTime参数的时间单位

workQueue:保存任务的阻塞队列,与线程池的大小有关:

当运行的线程数少于corePoolSize时,在有新任务时直接创建新线程来执行任务而无需再进队列

当运行的线程数等于或者多于corePoolSize,在有新任务添加时则加入队列,不直接创建线程

当队列满时,再有新任务加入时则创建新线程。

threadFactory:使用threadFactory创建新线程,默认使用defaultThreadFactory创建新线程。

handler:定义处理呗拒绝任务的策略,默认使用ThreadPoolExecutor.AbortPolicy,任务呗拒绝时抛出RejectExecutorException.