线程池核心参数。线程池的执行流程 线程池的拒绝策略和

https://blog.csdn.net/ye17186/article/details/89467919

线程池的核心参数

coreThreadNumber

核心线程数 核心线程数如果没满,会自会创建。核心线程即使没有任务,也会一直存在。

maxThreadNumber

最大线程数  线程池的最大线程数。

KeepAliveTIme

线程活跃时间 除了核心线程外,空余线程的活跃时间如果超过这个值,则停止。

TIMEUNIT

KeepAliveTIme的时间单位。

QUEEN

队列

也叫阻塞队列。当核心线程在在运行的时候,此时有任务进来,则加入到队列中,等待执行。

拒绝策略

 

线程池的拒绝策略

答:当提交的任务数>大于任务队列的容量+ 最大线程数量之和, 就会触发拒绝策略。

JDK自带4中策略。

1.abort策略,默认策略,该策略出发时,会抛出异常。

2.CallerRuns策略,直接运行这个任务。

3.Discard策略。直接丢掉这个任务。

4.DiscardOldest,丢掉任务队列中的第一个任务,然后将新任务添加进行。

下面是其他博客写的

Abort策略:默认策略,新任务提交时直接抛出未检查的异常RejectedExecutionException,该异常可由调用者捕获。

CallerRuns策略:为调节机制,既不抛弃任务也不抛出异常,而是将某些任务回退到调用者。不会在线程池的线程中执行新的任务,而是在调用exector的线程中运行新的任务。

Discard策略:新提交的任务被抛弃。

线程池的执行流程?

答:任务提交到线程池中,先看核心线程有没有满,如果满了,就提交到任务队列中,

如果任务队列满的话,就判断最大线程池有没有满,如果没满,就新建线程执行,如果满了,就执行线程池的拒绝策略。

posted @ 2020-09-04 15:33  xie风细雨  阅读(458)  评论(0)    收藏  举报