java并发-原子性

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));

你可能感兴趣的:(java并发-原子性)