线程池核心参数。线程池的执行流程 线程池的拒绝策略和
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策略:新提交的任务被抛弃。
线程池的执行流程?
答:任务提交到线程池中,先看核心线程有没有满,如果满了,就提交到任务队列中,
如果任务队列满的话,就判断最大线程池有没有满,如果没满,就新建线程执行,如果满了,就执行线程池的拒绝策略。

浙公网安备 33010602011771号