添加" final" makea类更安全

时间:2015-12-07 14:01:26

标签: java multithreading

我对线程安全有疑问。通过将final添加到states变量,它是否真的使类更安全?既然我没有对国家做任何事情而是阅读它,我也可以忘记final

class UnsafeStates {
  private String[] states = new String[] { "AK", "AL" /*...*/ };

  public String[] getStates() {
    return states;
  } 
}

3 个答案:

答案 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;
    } 
    }

它会是线程安全的,对吧?