java实现原子性
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));
网友评论