??????????????????????????????CAS????????????????????
????++a??????a++???????????????????????????

 

public final int incrementAndGet() {
for (;;) {
int current = get();
int next = current + 1;
if (compareAndSet(current?? next))
return next;
}
}

????????java.util.concurrent.ConcurrentLinkedQueue?????????????????????????????κ???????????CAS?????????CAS???????????JAVA??????????????????????????????CAS???????
???????
????1??ABA????
????CAS???????????ABA???????????a++???a?????????????????????????????????????CAS?????a?????б?a???????????????????????????????κλ??£????????????????У???b?????????£???c?????????μ??????????????a?????????????????п??????′??????????a??????????????????Σ??????????滹??????????????????ABA?????????к????????????????????????????????????????a??????????2???a++??????????????汾??????汾??????????a++???????????????????????е??????
????2????????CPU????????????κ???????????Щ???ù???
????3??????????????????????????????????
???????
??????????CAS????????????????????????????????ó?????????????????????????????????????CAS????????????????????????????????????CAS?????????????????????CAS????????????????????????????????ABA????