【发布时间】:2016-07-25 04:58:27
【问题描述】:
我有一个包含对数组的 volatile 引用的类:
private volatile Object[] objects = new Object[100];
现在,我可以保证,只有一个线程(称为writer)可以写入数组。例如,
objects[10] = new Object();
所有其他线程只会读取writer 线程写入的值。
问题:为了保证内存的一致性,我需要同步这样的读写吗?
我想,是的,我应该这样做。因为如果 JVM 在写入数组时提供某种内存一致性保证,那么从性能的角度来看,这将没有用处。但我不确定。在文档中没有发现任何有用的东西。
【问题讨论】:
-
如果您对多线程问题的了解足够深入,那么您可能应该使用正确的集合,而不是裸数组。
-
IMO,这里最好的答案是@Boann 的答案。他们都是正确的,但是 Boann 的回答很简单,并且正确,并且直接回答了你的问题。
-
@jameslarge 除了部分错误。
标签: java arrays multithreading volatile