corePoolSize
表示常驻核心线程数量。
maximumPoolSize
表示线程池中能同时执行的最大线程数量。这个值必须大于等于corePoolSize,如果这两个值相等,那就是固定大小的线程池
keepAliveTime
表示线程池中除常驻核心线程之外的其他线程的空闲时间,如果超过这个时间就会销毁。
queue
缓存队列,当请求的线程数大于corePoolSize的时候,线程会进入队列进行阻塞。当这个队列达到上限之后,线程池会创建新的线程,直到到吗maximumPoolSize大小位置。
RejectedExecutionHandler
表示拒绝策略。当queue满了之后,并行活动的线程数大于maximunPoolSize的时候,线程池通过改策略处理请求。
其中RejectedExcutionHandler默认包含四种策略:
AbortPolicy(默认) | 丢弃这个任务并抛出 RejectedExecutionException异常 |
---|---|
DiscardPolicy | 丢弃掉这个任务,但是不抛出异常 |
DiscardOldestPolicy | 抛弃掉在队列中等待最久的任务,然后把当前任务加入队列中 |
CallerRunsPolicy | 调用任务的run()方法绕过线程池直接执行 |
另外还支持自定义模式。
public class UserRejectedHandler implements RejectedExecutionHandler {
@Override
public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
System.out.println("处理逻辑");
}
}
threadFactory
表示线程工厂。他用来生产一组相同任务的线程。