pra*_*432 8 java multithreading
所以,如果我有
private static final char[] SOME_CHARS;
Run Code Online (Sandbox Code Playgroud)
这个线程安全吗?我的意思是,如果我有多个线程引用该数组中的字符(但不更改它们),那么会出现什么问题吗?
例如
private class someThread extends Thread(){
public void run(){
for(int i = 0; i < someIndexInSomeChars;i++){
System.out.println(SOME_CHARS[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
换句话说,我需要将char []放入某种带有线程支持的Java集合中吗?
Jon*_*eet 10
如果你在初始化后没有更改它们,它应该没问题.(请注意,这取决于它是一个static final变量 - 初始化类的方式将确保所有线程正确地看到初始化的数组引用.)
从多个线程读取数组是安全的.如果您不介意看到陈旧的结果,您甚至可以从多个线程编写 - 您最终不会"破坏"集合本身.(与许多其他集合不同,您无论如何都无法更改数组的大小......除了元素本身之外,没有任何状态可以修改.)
| 归档时间: |
|
| 查看次数: |
1433 次 |
| 最近记录: |