ThreadPoolExecutor 配置

2018-03-02  本文已影响52人  WJL3333

这是ThreadPoolExecutor类前面的一段注释,讲了一些自定义线程池的策略,同时也包含了一些线程池的原理。

1.核心线程数与最大线程数

2.按需创建线程池

默认情况下核心线程是在任务提交时才创建的。可以使用prestartCoreThreadprestartAllCoreThread来提前创建线程池。
(如果你配置了一个非空任务队列的话)

3.创建新线程

4.Keep-alive times

5.任务队列

6.任务等待(排队)策略

6.1 直接提交任务给工作线程

6.2 无界队列,一直缓存任务

6.3 有界队列

6.4 任务拒绝策略

使用execute(Runnable)提交的任务会被拒绝,如果线程池已经关闭,或者线程池使用了有限的线程数目和工作队列容量(而且队列满了)。
任何一种情况该方法都会调用配置的RejectedExecutionHandler中的rejectedExecution(Runnable,ThreadPoolExecutor)方法。

默认提供了4种方式

6.5 回调方法

6.6 队列维护

6.7 Finalization

在程序中没有引用的线程池(垃圾),线程池中的线程不会自动终结。如果你需要保证用户忘记调用shutdown方法时,线程池中的线程也会被自动回收,
你需要设置恰当的keepAliveTime使用一个下界为0的core数目而且设置allowCoreThreadTimeOut(boolean)

上一篇 下一篇

猜你喜欢

热点阅读