通过CAS的方式实现计数器
代码有测试用例,最简单的就是最可靠的。
package Offer.thread;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
public class Counter {
private AtomicInteger atomicInteger = new AtomicInteger(0);
public int getCount(){
safeCount();
return atomicInteger.get();
}
private void safeCount(){
for(;;){
int i =atomicInteger.get();
boolean suc = atomicInteger.compareAndSet(i, ++i);
if(suc){
break;
}
}
}
//====================下面代码用来测试线程安全
private int i =0;
private void unSafeCount(){
i++;
}
public static void main(String[] args) {
final Counter cas = new Counter();
List<Thread> list = new ArrayList<>();
lo