Update Java 并发.md

This commit is contained in:
luocaodan 2018-08-02 18:28:38 +08:00 committed by GitHub
parent c2c7893230
commit 726366858b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1419,7 +1419,7 @@ public final int incrementAndGet() {
}
```
以下代码是 getAndAddInt() 源码var1 指示内存地址var2 指示旧值var4 指示操作需要加的数值,这里为 1。通过 getIntVolatile(var1, var2) 得到旧的预期值,通过调用 compareAndSwapInt() 来进行 CAS 比较,如果 var2==var5那么就更新内存地址为 var1 的变量为 var5+var4。可以看到 getAndAddInt() 在一个循环中进行,发生冲突的做法是不断的进行重试。
以下代码是 getAndAddInt() 源码var1 指示对象内存地址var2 指示该字段相对对象内存地址的偏移var4 指示操作需要加的数值,这里为 1。通过 getIntVolatile(var1, var2) 得到旧的预期值,通过调用 compareAndSwapInt() 来进行 CAS 比较,如果 该字段内存地址中的值==var5那么就更新内存地址为 var1+var2 的变量为 var5+var4。可以看到 getAndAddInt() 在一个循环中进行,发生冲突的做法是不断的进行重试。
```java
public final int getAndAddInt(Object var1, long var2, int var4) {