Striped64
真是太好了,以至于 guava 和其他一些项目不得不在他们的库代码中复制它。 - EugeneStringBuilder
和StringBuffer
被展示为扩展Object
,隐藏了它们的共同、非公共基类AbstractStringBuilder
。 - Holger他们可能会在LongAdder
中扩展Number
类,谁知道呢?
来自Oracle文档:
可以得出结论,LongAdder
通过扩展Striped64
使用AtomicLong
。
问:为什么要通过LongAdder扩展Striped64?
答:
Striped64
持有一个Cells的哈希表(其中每个Cell都是AtomicLong
的变体)。当多个线程用于向LongAdder
(它扩展了Striped64
)添加值时,线程将其值添加到该哈希表中的不同单元格中。这导致并发线程处理并增加吞吐量。
也许Striped64是一种内部实现,他们想要将其抽象化。
Striped64
不是公共API,而Number
是。 - Slaw