通過CAS避免加鎖
阿新 • • 發佈:2017-06-03
.com tom 變化 con cin blog 添加 讀取 ted
package com.guo.day05; import java.util.concurrent.atomic.AtomicInteger; /** * Created by guo on 2017/6/3. */ public class Seqience { // 通過加鎖防止互斥 private int value; public synchronized int next1(){ return value++; } private AtomicInteger count =new AtomicInteger(0); private int next2(){ // 循環保證compareAndSet一直進行 // ABA問題的解決 添加了版本值 while(true){ int current = count.get();//讀取內存中的值 int next = current+1; //compareAndSet硬件指令一定是原子操作 比較內存的值和現在的值是否有變化 if(count.compareAndSet(current,next)){ return next; } } } }
通過CAS避免加鎖