Skip to content

Commit 0a2a1d0

Browse files
committed
ThreadPoolExecutor
1 parent a5d1c81 commit 0a2a1d0

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

MD/ThreadPoolExecutor.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,15 @@
2323

2424
![](https://ws1.sinaimg.cn/large/006tNbRwgy1fnbzmai8yrj30dw08574s.jpg)
2525

26-
首先第一步会判断核心
26+
首先第一步会判断核心线程数有没有达到上限,如果没有则创建线程(会获取全局锁),满了则会将任务丢进阻塞队列。
27+
28+
如果队列也满了则需要判断最大线程数是否达到上限,如果没有则创建线程(获取全局锁),如果最大线程数也满了则会根据饱和策略处理。
29+
30+
常用的饱和策略有:
31+
- 直接丢弃任务。
32+
- 调用者线程处理。
33+
- 丢弃队列中的最近任务,执行当前任务。
34+
35+
所以当线程池完成预热之后都是将任务放入队列,接着由工作线程一个个从队列里取出执行。
36+
37+

0 commit comments

Comments
 (0)