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