Skip to content

Commit

Permalink
禁止指令重排
Browse files Browse the repository at this point in the history
  • Loading branch information
zhulinn authored Mar 26, 2018
1 parent 6fa2eb7 commit 5cb19aa
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion notes/Java 并发.md
Original file line number Diff line number Diff line change
Expand Up @@ -436,7 +436,7 @@ synchronized 和 Lock 也能够保证内存可见性。它们能保证同一时

在 Java 内存模型中,允许编译器和处理器对指令进行重排序,重排序过程不会影响到单线程程序的执行,却会影响到多线程并发执行的正确性。

volatile 关键字通过添加内存屏障的方式来进制指令重排,即重排序时不能把后面的指令放到内存屏障之前。
volatile 关键字通过添加内存屏障的方式来禁止指令重排,即重排序时不能把后面的指令放到内存屏障之前。

可以通过 synchronized 和 Lock 来保证有序性,它们保证每个时刻只有一个线程执行同步代码,相当于是让线程顺序执行同步代码,自然就保证了有序性。

Expand Down

0 comments on commit 5cb19aa

Please sign in to comment.