介绍
- java.util.concurrent.ThreadPoolExecutor
- public class ThreadPoolExecutor extends AbstractExecutorService
API
构造器
ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue)
ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory)
ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, RejectedExecutionHandler handler)
ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler)
- corePoolSize :初始线程池大小
- maximumPoolSize :最大线程池大小
- keepAliveTime :设置线程存活时间,即当池中线程多于初始大小时,多出的线程保留的时长
- unit :keepAliveTime 的时间单位
- workQueue :设置队列,用于存在未执行的线程
- threadFactory :线程工厂,用于自定义线程创建
- handler :设置当线程阻塞(block)时的异常处理器,所谓线程阻塞即线程池和等待队列已满,无法处理线程时采取的策略
public
-
setCorePoolSize, getCorePoolSize
-
setMaximumPoolSize, getMaximumPoolSize
-
setKeepAliveTime, getKeepAliveTime
-
getQueue
- workQueue
-
setThreadFactory, getThreadFactory
-
setRejectedExecutionHandler, getRejectedExecutionHandler
- 匹配构造器中的参数
-
execute
void execute(Runnable command)
-
shutdown
- 启动有序关闭,其中执行先前提交的任务,但不会接受新任务
-
shutdownNow
- 尝试停止所有正在执行的任务,停止正在等待的任务的处理,并返回正在等待执行的任务的列表
- 此方法不等待主动执行的任务终止。使用
awaitTermination
来做到这一点
-
awaitTermination
- 阻塞,直到所有任务在关闭请求后完成执行
-
prestartAllCoreThreads
- 启动所有核心线程
-
prestartCoreThread
- 启动一个核心线程
- 默认情况下,即使是核心线程也仅在新任务到达时才最初创建和启动
-
allowsCoreThreadTimeOut
- 允许核心线程超时
- 默认 false ,核心线程永远不会由于缺少传入任务而终止
-
allowCoreThreadTimeOut
- 设置
allowsCoreThreadTimeOut
- 设置
-
getActiveCount
- 返回正在主动执行任务的线程的大致数量
-
getTaskCount
- 返回已计划执行的任务的大致总数
-
getCompletedTaskCount
- 返回已完成执行的任务的大致总数
-
getLargestPoolSize
- 返回池中曾经同时存在的最大线程数
-
getPoolSize
- 返回当前线程池中线程数量
-
isTerminating
- 如果此执行器在
shutdown
或shutdownNow
之后正在终止但尚未完全终止,则返回 true
- 如果此执行器在
-
purge
- 尝试从工作队列中删除所有已取消的
Future
任务
- 尝试从工作队列中删除所有已取消的
-
remove
- 从队列中移除