String Array线程安全吗?

时间:2014-06-17 02:47:29

标签: java multithreading

bookTokens是否在下面的代码中是线程安全的?我不确定是否可以以线程安全的方式读取String数组的值?

public Class Myclass{

    private static final String[] bookTokens = { "amazon", "manning", "book"};

    public static void methodOne(){
    //read values from bookTokens
    }


    public static void methodTwo(){
    //read values from bookTokens
    }

}

3 个答案:

答案 0 :(得分:4)

通常,数组不是线程安全的。

但是,在这种情况下,我们有一个不会更新的数组,并且这个数组的初始化方式可以确保与随后读取它的任何线程正确同步。

因此,在这种情况下,代码是线程安全的。

答案 1 :(得分:1)

如果您可以确保Myclass中没有与以下内容相同的代码,则此代码仅是线程安全的:

    public static void mutateBookTokens() {
        bookTokens[2] = "addison-wesley";
    }

答案 2 :(得分:0)

任何只读取值并且不会更改任何内容的代码本质上是线程安全的,因为它使用的数据就好像它是不可变的一样。