ThreadPoolExecutor的参数的意义及解析
2021-04-16 14:59:10 10 举报
ThreadPoolExecutor的各个参数实际的意义,很有迷惑性!
作者其他创作
大纲/内容
2
易混淆点:----------------------------------------------------------------------------1. 阻塞队列是coreSize满了后,新任务会加入进去,而不是到达maxSize后才加入2. 当前线程数没有达到coreSize时,新任务一定会创建新线程直到达到coreSize3. 当queue满了后,才会继续创建新线程直到达到maxSize4. 线程存活时间是针对
当一个新的任务来了... ...
创建新的线程(runningSize+1)(coreSize可用-1)
core: 10
no
继续创建线程(runningSize+1)(remainSize可用-1)
remain: 90
capacity: 100
将任务放到队列中(realCapacity+1)
runningSize < maxSize
... ...
RejectedExecutionHandler
1
yes
100
max: 100
runningSize<coreSize
Context:----------------------------------------------------------------------------1. corePoolSize = 10 核心线程池大小。 2. maxPoolSize = 100 最大线程池大小。3. queueCapacity = 100 阻塞队列大小。4. keepAliveSeconds = 60s 空闲线程存活时间
12
10
11
wait
keepAliveSeconds:只会销毁remain的线程,如果线程数不足coreSize,不会销毁任何线程。
useQueueSize<maxCapacity
capacity只会作用于coresize,当core线程全部繁忙的话那么新的任务就会进入队列等待被执行
new Taskcomming in ...
0 条评论
下一页