Skip to content

Commit 209b2e8

Browse files
committed
ignore
1 parent 52260ef commit 209b2e8

1 file changed

Lines changed: 35 additions & 1 deletion

File tree

‎Java/concurrent/java-juc-executor-ThreadPoolExecutor.java‎

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,22 @@
1010

1111
* corePoolSize
1212
* 线程池基本的线程数量
13-
* 一般线程池开始时是没有线程的,只有当任务来了并且线程数量小于corePoolSize才会创建线程
1413

1514
* maximumPoolSize
1615
* 线程池最大线程数量
16+
1717
* keepAliveTime
1818
* 线程空闲后的存活时间
19+
1920
* unit
2021
* 存活时间的单位
22+
2123
* workQueue
2224
* 存放任务的阻塞队列
25+
2326
* threadFactory
2427
* 线程池工厂类
28+
2529
* handler
2630
* 在线程池无法处理新任务时的处理handler
2731

@@ -117,3 +121,33 @@ public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {
117121
# ThreadPoolExecutor 无法处理新任务时的处理Handler 接口
118122
# 抽象方法
119123
void rejectedExecution(Runnable r, ThreadPoolExecutor executor);
124+
125+
126+
---------------------------
127+
线程池参数的详解 |
128+
---------------------------
129+
corePoolSize
130+
* 如果运行的线程少于 corePoolSize, 则创建新线程来处理任务, 即使线程池中的其他线程是空闲的
131+
* 如果线程池中的线程数量大于等于 corePoolSize 且小于 maximumPoolSize , 则只有当 workQueue 满时才创建新的线程去处理任务
132+
133+
* 如果设置的 corePoolSize 和 maximumPoolSize 相同, 则创建的线程池的大小是固定的,
134+
* 这时如果有新任务提交, 若workQueue未满, 则将请求放入workQueue中, 等待有空闲的线程去从workQueue中取任务并处理
135+
136+
* 如果运行的线程数量大于等于 maximumPoolSize, 这时如果workQueue已经满了, 则通过handler所指定的策略来处理任务;
137+
138+
maximumPoolSize
139+
* 最大线程数, 当线程数 >= corePoolSize 的时候, 会把runnable放入workQueue中
140+
141+
workQueue
142+
* 等待队列, 当任务提交时, 如果线程池中的线程数量大于等于 corePoolSize 的时候, 把该任务封装成一个 Worker 对象放入等待队列
143+
144+
1, 当线程数小于 corePoolSize 时, 创建线程执行任务
145+
146+
2, 当线程数大于等于 corePoolSize 并且 workQueue 没有满时, 放入 workQueue 中
147+
148+
3, 线程数大于等于 corePoolSize 并且当 workQueue 满时, 新任务新建线程运行, 线程总数要小于 maximumPoolSize
149+
150+
4, 当线程总数等于 maximumPoolSize 并且 workQueue 满了的时候执行 handler 的 rejectedExecution 也就是拒绝策略
151+
152+
153+

0 commit comments

Comments
 (0)