Java 的 LongAdder
比 AtomicLong
性能更高。但是,如果我得到的是正确的,那么对于 ID 生成器来说这不是一个好的选择,因为没有原子的“读取和递增”操作。
我问这个是因为我看到有人推荐它用于 ID 生成,但我看不出有什么意义,因为每次操作都会调用 sum()
。
LongAdder
是简单长 ID 生成器的好选择还是坏选择?
最佳答案
我认为您已经回答了自己的问题。从单线程生成 id 绝对是大材小用,并且在多线程场景中不可用,因为没有类似 incrementAndGet
的原子操作。所以答案必须是它不是一个好的选择。
正如 javadoc 所说,这个类对于收集统计数据以及竞争可能很高的情况很有用:
This class is usually preferable to
AtomicLong
when multiple threads update a common sum that is used for purposes such as collecting statistics, not for fine-grained synchronization control.
关于java - LongAdder 是 ID 生成器的错误选择吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50739351/