在原子类AtomicInteger中,有两个方法incrementAndGet和getAndIncrement
实际使用中我们可以看到
AtomicInteger i=new AtomicInteger(0);
System.out.println(i.incrementAndGet());
System.out.println(i.getAndIncrement());
这两种方式输入的值都是1,那他们就没有区别了吗?
我们可以看看源码
public final int incrementAndGet() {
return unsafe.getAndAddInt(this, valueOffset, 1) + 1;
}
public final int getAndIncrement() { return unsafe.getAndAddInt(this, valueOffset, 1); }
然后可以看到源码还是有点区别的,我们把自增后的i赋值给变量q就知道了
AtomicInteger i=new AtomicInteger(0);
int q=i.incrementAndGet();
System.out.println(q);输出1
或
int q=i.getAndIncrement();
System.out.println(q);输出0
类似于i++和++i的区别