Skip to content

Commit

Permalink
Update Atomic.md
Browse files Browse the repository at this point in the history
  • Loading branch information
Snailclimb authored Apr 11, 2019
1 parent fb0b585 commit 35b1196
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion docs/java/Multithread/Atomic.md
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ AtomicInteger 类的部分源码:

AtomicInteger 类主要利用 CAS (compare and swap) + volatile 和 native 方法来保证原子操作,从而避免 synchronized 的高开销,执行效率大为提升。

CAS的原理是拿期望的值和原本的一个值作比较,如果相同则更新成新的值。UnSafe 类的 objectFieldOffset() 方法是一个本地方法,这个方法是用来拿到“原来的值”的内存地址,返回值是 valueOffset。另外 value 是一个volatile变量,在内存中可见,因此 JVM 可以保证任何时刻任何线程总能拿到该变量的最新值。
CAS的原理是拿期望的值和原本的一个值作比较,如果相同则更新成新的值。UnSafe 类的 objectFieldOffset() 方法是一个本地方法,这个方法是用来拿到“原来的值”的内存地址。另外 value 是一个volatile变量,在内存中可见,因此 JVM 可以保证任何时刻任何线程总能拿到该变量的最新值。


### 3 数组类型原子类
Expand Down

0 comments on commit 35b1196

Please sign in to comment.