From 302c115d9f923a1801dca5f10ac88e1778e1215f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=AD=E7=94=B5=E9=AC=BC=E5=85=88=E7=94=9F?= <525032143@qq.com> Date: Tue, 28 Sep 2021 11:15:19 +0800 Subject: [PATCH] =?UTF-8?q?Update=20Java=E5=B9=B6=E5=8F=91=E8=BF=9B?= =?UTF-8?q?=E9=98=B6=E5=B8=B8=E8=A7=81=E9=9D=A2=E8=AF=95=E9=A2=98=E6=80=BB?= =?UTF-8?q?=E7=BB=93.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改文本和语句通顺性 --- .../multi-thread/Java并发进阶常见面试题总结.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/java/multi-thread/Java并发进阶常见面试题总结.md b/docs/java/multi-thread/Java并发进阶常见面试题总结.md index 78489e30..4a2e61b1 100644 --- a/docs/java/multi-thread/Java并发进阶常见面试题总结.md +++ b/docs/java/multi-thread/Java并发进阶常见面试题总结.md @@ -286,7 +286,7 @@ JDK1.6 对锁的实现引入了大量的优化,如偏向锁、轻量级锁、 ### 2.3. 并发编程的三个重要特性 1. **原子性** : 一个的操作或者多次操作,要么所有的操作全部都得到执行并且不会收到任何因素的干扰而中断,要么所有的操作都执行,要么都不执行。`synchronized` 可以保证代码片段的原子性。 -2. **可见性** :当一个变量对共享变量进行了修改,那么另外的线程都是立即可以看到修改后的最新值。`volatile` 关键字可以保证共享变量的可见性。 +2. **可见性** :当一个线程对共享变量进行了修改,那么另外的线程都是立即可以看到修改后的最新值。`volatile` 关键字可以保证共享变量的可见性。 3. **有序性** :代码在执行的过程中的先后顺序,Java 在编译器以及运行期间的优化,代码的执行顺序未必就是编写代码时候的顺序。`volatile` 关键字可以禁止指令进行重排序优化。 ### 2.4. 说说 synchronized 关键字和 volatile 关键字的区别 @@ -919,7 +919,7 @@ AQS 的全称为(`AbstractQueuedSynchronizer`),这个类在` java.util.con ![AQS类](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-6/AQS类.png) -AQS 是一个用来构建锁和同步器的框架,使用 AQS 能简单且高效地构造出应用广泛的大量的同步器,比如我们提到的 `ReentrantLock`,`Semaphore`,其他的诸如 `ReentrantReadWriteLock`,`SynchronousQueue`,`FutureTask` 等等皆是基于 AQS 的。当然,我们自己也能利用 AQS 非常轻松容易地构造出符合我们自己需求的同步器。 +AQS 是一个用来构建锁和同步器的框架,使用 AQS 能简单且高效地构造出大量应用广泛的同步器,比如我们提到的 `ReentrantLock`,`Semaphore`,其他的诸如 `ReentrantReadWriteLock`,`SynchronousQueue`,`FutureTask` 等等皆是基于 AQS 的。当然,我们自己也能利用 AQS 非常轻松容易地构造出符合我们自己需求的同步器。 ### 6.2. AQS 原理分析