所以如果我有
private static final char[] SOME_CHARS;这个线程安全吗?我的意思是,如果我有多个线程引用该数组中的字符(但不更改它们),会出现什么问题吗?
例如:
private class someThread extends Thread(){
public void run(){
for(int i = 0; i < someIndexInSomeChars;i++){
System.out.println(SOME_CHARS[i]);
}
}换句话说,我是否需要将char[]放入某种具有线程支持的Java集合中?
发布于 2012-10-29 16:02:40
如果你在初始化后没有改变它们,它应该是好的。(请注意,这依赖于它是一个static final变量-初始化类的方式将确保所有线程正确地看到初始化的数组引用。)
从多个线程读取数组是安全的。如果你不介意看到陈旧的结果,你甚至可以从多个线程写--你不会“破坏”集合本身。(与许多其他集合不同,您无论如何都不能更改数组的大小...除了元素本身之外,没有其他状态可以修改。)
https://stackoverflow.com/questions/13117849
复制相似问题