Skip to content

Commit 337845f

Browse files
committed
✏️ Fixing typos.
1 parent 57608cb commit 337845f

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

MD/concurrent/volatile.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828
### 内存可见性的应用
2929

30-
当我们需要在两个线程间依据主内存通信时,通信的那个变量就必须的用 volatile 来修饰:
30+
当我们需要在两个线程间依据主内存通信时,通信的那个变量就必须的用 `volatile` 来修饰:
3131

3232
```java
3333
public class Volatile implements Runnable{
@@ -108,10 +108,10 @@ public class VolatileInc implements Runnable{
108108

109109
当我们三个线程(t1,t2,main)同时对一个 `int` 进行累加时会发现最终的值都会小于 30000。
110110

111-
> 这是因为虽然 `volatile` 保证了内存可见性,保证了每个线程拿到的值都是最新值,但 `count ++` 这个操作并不是原子的,这里面涉及到获取值、自增、赋值的操作并不能同时完成。
111+
> 这是因为虽然 `volatile` 保证了内存可见性,每个线程拿到的值都是最新值,但 `count ++` 这个操作并不是原子的,这里面涉及到获取值、自增、赋值的操作并不能同时完成。
112112
>
113113
114-
- 所以想到达到线程安全可以使这三个线程串行执行(那其实就是单线程,没有发挥多线程的优势)。
114+
- 所以想到达到线程安全可以使这三个线程串行执行(其实就是单线程,没有发挥多线程的优势)。
115115

116116
- 也可以使用 `synchronize` 或者是锁的方式来保证原子性。
117117

@@ -120,7 +120,7 @@ public class VolatileInc implements Runnable{
120120

121121
## 指令重排
122122

123-
内存可见性只是 volatile 的其中一个作用,它还可以防止 JVM 进行指令重排优化。
123+
内存可见性只是 `volatile` 的其中一个语义,它还可以防止 JVM 进行指令重排优化。
124124

125125
举一个伪代码:
126126

0 commit comments

Comments
 (0)