@@ -121,13 +121,14 @@ public class ScheduledThreadPoolExecutor
121121 /**
122122 * 用给定的初始参数创建一个新的ThreadPoolExecutor。
123123 */
124- public ThreadPoolExecutor (int corePoolSize,
125- int maximumPoolSize,
126- long keepAliveTime,
127- TimeUnit unit,
128- BlockingQueue<Runnable > workQueue,
129- ThreadFactory threadFactory,
130- RejectedExecutionHandler handler) {
124+ public ThreadPoolExecutor (int corePoolSize,// 线程池的核心线程数量
125+ int maximumPoolSize,// 线程池的最大线程数
126+ long keepAliveTime,// 当线程数大于核心线程数时,多余的空闲线程存活的最长时间
127+ TimeUnit unit,// 时间单位
128+ BlockingQueue<Runnable > workQueue,// 任务队列,用来储存等待执行任务的队列
129+ ThreadFactory threadFactory,// 线程工厂,用来创建线程,一般默认即可
130+ RejectedExecutionHandler handler// 拒绝策略,当提交的任务过多而不能及时处理时,我们可以定制策略来处理任务
131+ ) {
131132 if (corePoolSize < 0 ||
132133 maximumPoolSize <= 0 ||
133134 maximumPoolSize < corePoolSize ||
@@ -168,7 +169,9 @@ public class ScheduledThreadPoolExecutor
168169- ** ` ThreadPoolExecutor.DiscardPolicy ` :** 不处理新任务,直接丢弃掉。
169170- ** ` ThreadPoolExecutor.DiscardOldestPolicy ` :** 此策略将丢弃最早的未处理的任务请求。
170171
171- 举个例子: Spring 通过 ` ThreadPoolTaskExecutor ` 或者我们直接通过 ` ThreadPoolExecutor ` 的构造函数创建线程池的时候,当我们不指定 ` RejectedExecutionHandler ` 饱和策略的话来配置线程池的时候默认使用的是 ` ThreadPoolExecutor.AbortPolicy ` 。在默认情况下,` ThreadPoolExecutor ` 将抛出 ` RejectedExecutionException ` 来拒绝新来的任务 ,这代表你将丢失对这个任务的处理。 对于可伸缩的应用程序,建议使用 ` ThreadPoolExecutor.CallerRunsPolicy ` 。当最大池被填满时,此策略为我们提供可伸缩队列。(这个直接查看 ` ThreadPoolExecutor ` 的构造函数源码就可以看出,比较简单的原因,这里就不贴代码了。)
172+ 举个例子:
173+ 174+ > Spring 通过 ` ThreadPoolTaskExecutor ` 或者我们直接通过 ` ThreadPoolExecutor ` 的构造函数创建线程池的时候,当我们不指定 ` RejectedExecutionHandler ` 饱和策略的话来配置线程池的时候默认使用的是 ` ThreadPoolExecutor.AbortPolicy ` 。在默认情况下,` ThreadPoolExecutor ` 将抛出 ` RejectedExecutionException ` 来拒绝新来的任务 ,这代表你将丢失对这个任务的处理。 对于可伸缩的应用程序,建议使用 ` ThreadPoolExecutor.CallerRunsPolicy ` 。当最大池被填满时,此策略为我们提供可伸缩队列。(这个直接查看 ` ThreadPoolExecutor ` 的构造函数源码就可以看出,比较简单的原因,这里就不贴代码了。)
172175
173176### 3.2 推荐使用 ` ThreadPoolExecutor ` 构造函数创建线程池
174177
0 commit comments