在 Java 8 中重置原子长整型的值

  • 本文关键字:长整型 Java java
  • 更新时间 :
  • 英文 :


一旦达到最大值,如何将原子长整型的值重置为零?因为我不想为ID生成生成负数

当然,要小心ID生成和包装。就像其他人说的那样,您最终会重复使用ID。

AtomicLong atomicLong = new AtomicLong(0L);
atomicLong.compareAndSet(Long.MAX_VALUE, 0);

如果atomicLong等于Long.MAX_VALUE,则它被设置回0。 如果要同时进行比较和递增,则需要同步块或 Java 8 功能。

在 Java 8+ 中:

long nextId = atomicLong.updateAndGet(current -> current == Long.MAX_VALUE ? 0 : current + 1);

https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicLong.html#updateAndGet-java.util.function.LongUnaryOperator-

最新更新