1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-06-16 18:10:13 +08:00

Merge pull request #1045 from QiuYukang/fix-typos

Fix 2020最新Java并发进阶常见面试题总结.md
This commit is contained in:
Guide哥 2021-01-04 15:39:38 +08:00 committed by GitHub
commit dc20d8f3d8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -775,14 +775,14 @@ pool-1-thread-1 End. Time = Tue Nov 12 20:59:54 CST 2019
int c = ctl.get(); int c = ctl.get();
// 下面会涉及到 3 步 操作 // 下面会涉及到 3 步 操作
// 1.首先判断当前线程池中行的任务数量是否小于 corePoolSize // 1.首先判断当前线程池中行的任务数量是否小于 corePoolSize
// 如果小于的话通过addWorker(command, true)新建一个线程,并将任务(command)添加到该线程中;然后,启动该线程从而执行任务。 // 如果小于的话通过addWorker(command, true)新建一个线程,并将任务(command)添加到该线程中;然后,启动该线程从而执行任务。
if (workerCountOf(c) < corePoolSize) { if (workerCountOf(c) < corePoolSize) {
if (addWorker(command, true)) if (addWorker(command, true))
return; return;
c = ctl.get(); c = ctl.get();
} }
// 2.如果当前行的任务数量大于等于 corePoolSize 的时候就会走到这里 // 2.如果当前行的任务数量大于等于 corePoolSize 的时候就会走到这里
// 通过 isRunning 方法判断线程池状态,线程池处于 RUNNING 状态才会被并且队列可以加入任务,该任务才会被加入进去 // 通过 isRunning 方法判断线程池状态,线程池处于 RUNNING 状态才会被并且队列可以加入任务,该任务才会被加入进去
if (isRunning(c) && workQueue.offer(command)) { if (isRunning(c) && workQueue.offer(command)) {
int recheck = ctl.get(); int recheck = ctl.get();
@ -808,7 +808,7 @@ pool-1-thread-1 End. Time = Tue Nov 12 20:59:54 CST 2019
没搞懂的话,也没关系,可以看看我的分析: 没搞懂的话,也没关系,可以看看我的分析:
> 我们在代码中模拟了 10 个任务,我们配置的核心线程数为 5 、等待队列容量为 100 ,所以每次只可能存在 5 个任务同时执行,剩下的 5 个任务会被放到等待队列中去。当前的 5 个任务之行完成后,才会之行剩下的 5 个任务。 > 我们在代码中模拟了 10 个任务,我们配置的核心线程数为 5 、等待队列容量为 100 ,所以每次只可能存在 5 个任务同时执行,剩下的 5 个任务会被放到等待队列中去。当前的 5 个任务执行完成后,才会执行剩下的 5 个任务。
## 5. Atomic 原子类 ## 5. Atomic 原子类