AtomicReferenceArray有什么用?

Mar*_*gus 11 java concurrency

什么时候使用是个好主意AtomicReferenceArray?请举例说明.

dog*_*ane 10

如果你有一个共享的对象引用数组,那么你将使用一个AtomicReferenceArray来确保不同的线程不能同时更新数组,即一次只能更新一个元素.

但是,在AtomicReference[](数组AtomicReference)多个线程中仍然可以模拟地更新不同的元素,因为原子性在元素上,而不是在整个数组上.

更多信息在这里.

  • 是的,尽管这个答案已被接受,但实际上是不正确的.如果您愿意,可以查看来源.正如一些人在这里所说的那样,它是一个对象引用数组,*其中任何一个*都可以原子方式更新.但不是关于阵列中的任何其他引用.它通过仅使用执行此魔法所需的一组东西(Unsafe类)并使用偏移来改变它所拥有的任何一个对象引用,从而节省空间与AtomicReference [].http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/concurrent/atomic/AtomicReferenceArray.java (5认同)

irr*_*ble 9

看起来它在功能上等同于AtomicReference[],虽然占用的内存少了一点.

因此,当您需要超过一百万个原子引用时,它非常有用 - 无法想到任何用例.

  • 比公认的答案要好得多。与 AtomicReference[] 相比,它节省了空间 - Unsafe 类的一份副本,它可以作用于许多对象引用。 (2认同)