繁体   English   中英

LongAdder [] + System.arraycopy()=?

[英]LongAdder[] + System.arraycopy() =?

简化的情况是,我有一个LongAdders数组,并且有多个线程正在访问此数组,以便在给定索引处递增变量。

在没有任何其他锁定机制的情况下进行arraycopy安全吗?

就我对此事的调查而言,应该没问题,因为LongAdder的所有重要字段都是易失的,并且由于描述的缘故,invoke()应该是原子的(也就是说,我希望它不会保留任何可能属于任何状态的部分状态)问题)。

有人可以确认吗?

PS我知道我可能不会获得最新的快照(在复制过程中增加),但是可以。

无论如何, LongAdder数组将仅包含引用 ,因此将被复制。 LongAdder中的字段与此无关。

使用arraycopy是否“安全”取决于您使用它的方式-如果您使用它来将一个数组复制到另一个数组,那么就好了(本身;您需要担心如何制作数组)对线程可见)。 如果使用它将数组的一部分复制到同一数组的另一部分,则应考虑多个线程从同一索引读取并获得不同引用的可能性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM