使用Java 1.6和AtomicLongArray,我想将原始的AtomicLongArray复制到一个新的AtomicLongArray中。有一个构造函数需要一个数组(AtomicLongArray(long [])),所以我认为我可以从原始数组中获取该数组并将其提供给构造函数。

遗憾的是,AtomicLongArray中的实际long []是私有的,似乎没有吸气剂。有什么方法可以做到,这意味着将值从一个AtomicLongArray复制到另一个?由于无法使用sun.misc.Unsafe类,因此无法基于该类创建自己的类。

这是必需的,因为我要遍历这些值,并且我不希望它们在迭代过程中被另一个线程修改。所以我想我可以制作一个副本并将其用于迭代...

谢谢!
菲利普

最佳答案

我怀疑您必须创建自己的long[]并首先填充它,或者只是遍历原始的:

AtomicLongArray copy = new AtomicLongArray(original.length());
for (int i = 0; i < copy.length(); i++)
{
    copy.set(i, original.get(i));
}

请注意,尽管AtomicLongArray中的每个单独操作都是原子操作,但是没有批量操作-因此无法在时间T上获取整个数组的“快照”。如果您想要这种行为,我相信您需要使用同步。

10-04 17:52