[英]is String Array thread safe?
在下面的代码中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
}
}
通常,数组不是线程安全的。
但是,在这种情况下,我们有一个不会更新的数组,并且以确保与随后读取该数组的任何线程正确同步的方式对其进行了初始化。
因此,在这种情况下,代码是线程安全的。
仅当您可以确保Myclass中没有与以下代码等效的代码时,此代码才是线程安全的:
public static void mutateBookTokens() {
bookTokens[2] = "addison-wesley";
}
本质上,任何仅读取值且不更改任何内容的代码都是线程安全的,因为它使用的数据就像是不可变的一样被使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.