JAVA学习记录-原子操作-自增操作
//利用java并发原子类AtomicInteger创建一个对象,初始值为 0
private AtomicInteger atomicInteger = new AtomicInteger(0);
public final int getAndIncrement(){
int current;//上一次的数值 初始默认 0
int next;//返回值 初始默认 0
do {
current = this.atomicInteger.get();
next = current >= 5 ? 0: current +1;
System.out.println("*****current = " + current);
System.out.println("*****next = " + next);
}while(!this.atomicInteger.compareAndSet(current,next));
// this.atomicInteger.compareAndSet(current,next) 意思是判断current的数值是否等于内存中指定位置的值(this.),如果相等,
// 返回true,并且将next复制到内存中替换原来的值,如果不等,则返回false,并且不会进行赋值替换
System.out.println("******next = " + next);
return next;
}//以上方法用途是生成1,2,3,4,5,1,2,3,4,5,1,2,3,4,5......无论怎样都不会出现重复(每个12345可能顺序不同,可能是13245,但不会出现重复,为啥?因为原子)
网友评论