我对线程安全有疑问。通过将final
添加到states变量,它是否真的使类更安全?既然我没有对国家做任何事情而是阅读它,我也可以忘记final
?
class UnsafeStates {
private String[] states = new String[] { "AK", "AL" /*...*/ };
public String[] getStates() {
return states;
}
}
答案 0 :(得分:0)
有人仍然可以使用final更改值。与州[1] ="某事&#34 ;;
答案 1 :(得分:0)
即使您没有更改数组的值,它也不是线程安全的,因为数组未安全发布。这里需要final关键字以确保数组的初始值对其他线程可见。
答案 2 :(得分:0)
所以如果我给了另一个具有相同值的对象 像
class UnsafeStates {
private String[] states = new String[] { "AK", "AL" /*...*/ };
public String[] getStates() {
String[] states2 = new String[] { "AK", "AL" /*...*/ };
return states2;
}
}
它会是线程安全的,对吧?