java.util.concurrent.atomic 包中提供了很多高级的指令,来保证操作的原子性 Atomiclnteger 类提供了方法 incrementAndGet 用来自增
public static AtomicLong nextNumber = new AtomicLong();
long id = nextNumber.incrementAndGet()
incrementAndGet 方法以原子方式将 AtomicLong 自增, 并返回自增后的值。
如果更复杂的更新可以使用compareAndSet方法 实现跟踪线程并观察最大值
do {
oldValue = largest.get();
newValue = Max.max(oldValue,newValue);
}while(!largest.compareAndSet(oldValue, newValue))
java8 可以使用循环表达式 largest.updateAndGet(x -> Math.max(x, observed));