Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 4edd4c2

Browse files
线程池学习总结
1 parent 4f7cf07 commit 4edd4c2

File tree

2 files changed

+12
-9
lines changed

2 files changed

+12
-9
lines changed

‎README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@
9292
* **[Java 并发进阶常见面试题总结](docs/java/Multithread/JavaConcurrencyAdvancedCommonInterviewQuestions.md)**
9393
* [并发容器总结](docs/java/Multithread/并发容器总结.md)
9494
* **[Java线程池学习总结](./docs/java/Multithread/java线程池学习总结.md)**
95-
* [(待办)如何确定线程池线程数量?]()
95+
* [如何确定线程池线程数量?]()
9696

9797
* [乐观锁与悲观锁](docs/essential-content-for-interview/面试必备之乐观锁与悲观锁.md)
9898
* [JUC 中的 Atomic 原子类总结](docs/java/Multithread/Atomic.md)

‎docs/java/Multithread/java线程池学习总结.md‎

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -121,13 +121,14 @@ public class ScheduledThreadPoolExecutor
121121
/**
122122
* 用给定的初始参数创建一个新的ThreadPoolExecutor。
123123
*/
124-
public ThreadPoolExecutor(int corePoolSize,
125-
int maximumPoolSize,
126-
long keepAliveTime,
127-
TimeUnit unit,
128-
BlockingQueue<Runnable> workQueue,
129-
ThreadFactory threadFactory,
130-
RejectedExecutionHandler handler) {
124+
public ThreadPoolExecutor(int corePoolSize,//线程池的核心线程数量
125+
int maximumPoolSize,//线程池的最大线程数
126+
long keepAliveTime,//当线程数大于核心线程数时,多余的空闲线程存活的最长时间
127+
TimeUnit unit,//时间单位
128+
BlockingQueue<Runnable> workQueue,//任务队列,用来储存等待执行任务的队列
129+
ThreadFactory threadFactory,//线程工厂,用来创建线程,一般默认即可
130+
RejectedExecutionHandler handler//拒绝策略,当提交的任务过多而不能及时处理时,我们可以定制策略来处理任务
131+
) {
131132
if (corePoolSize < 0 ||
132133
maximumPoolSize <= 0 ||
133134
maximumPoolSize < corePoolSize ||
@@ -168,7 +169,9 @@ public class ScheduledThreadPoolExecutor
168169
- **`ThreadPoolExecutor.DiscardPolicy`:** 不处理新任务,直接丢弃掉。
169170
- **`ThreadPoolExecutor.DiscardOldestPolicy`:** 此策略将丢弃最早的未处理的任务请求。
170171

171-
举个例子: Spring 通过 `ThreadPoolTaskExecutor` 或者我们直接通过 `ThreadPoolExecutor` 的构造函数创建线程池的时候,当我们不指定 `RejectedExecutionHandler` 饱和策略的话来配置线程池的时候默认使用的是 `ThreadPoolExecutor.AbortPolicy`。在默认情况下,`ThreadPoolExecutor` 将抛出 `RejectedExecutionException` 来拒绝新来的任务 ,这代表你将丢失对这个任务的处理。 对于可伸缩的应用程序,建议使用 `ThreadPoolExecutor.CallerRunsPolicy`。当最大池被填满时,此策略为我们提供可伸缩队列。(这个直接查看 `ThreadPoolExecutor` 的构造函数源码就可以看出,比较简单的原因,这里就不贴代码了。)
172+
举个例子:
173+
174+
> Spring 通过 `ThreadPoolTaskExecutor` 或者我们直接通过 `ThreadPoolExecutor` 的构造函数创建线程池的时候,当我们不指定 `RejectedExecutionHandler` 饱和策略的话来配置线程池的时候默认使用的是 `ThreadPoolExecutor.AbortPolicy`。在默认情况下,`ThreadPoolExecutor` 将抛出 `RejectedExecutionException` 来拒绝新来的任务 ,这代表你将丢失对这个任务的处理。 对于可伸缩的应用程序,建议使用 `ThreadPoolExecutor.CallerRunsPolicy`。当最大池被填满时,此策略为我们提供可伸缩队列。(这个直接查看 `ThreadPoolExecutor` 的构造函数源码就可以看出,比较简单的原因,这里就不贴代码了。)
172175
173176
### 3.2 推荐使用 `ThreadPoolExecutor` 构造函数创建线程池
174177

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /