Ric*_*ich 18 java performance java.util.concurrent
我需要一个long具有以下要求/事实的类型的计数器:
根据这些要求,您将如何选择实施计数器?作为一个简单的long,作为一个volatile long或使用AtomicLong?为什么?
目前我有一个volatile long但是想知道另一种方法是否会更好.我也是通过做++counter而不是增加我的长期counter++.这真的更有效率(因为我已被引导相信其他地方),因为没有完成任务?
在 Java 8 中,使用 LongAdder 甚至比线程争用高的 AtomicLong 更好。
LongAdder JavaDoc:
当多个线程更新用于收集统计信息等目的的公共总和时,此类通常比 AtomicLong 更可取,而不是用于细粒度同步控制。在低更新争用下,这两个类具有相似的特征。但在高争用情况下,此类的预期吞吐量明显更高,但代价是更高的空间消耗。