gpt4 book ai didi

java - 这在 Java 中是线程安全的吗?

转载 作者:行者123 更新时间:2023-11-30 07:00:42 24 4
gpt4 key购买 nike

从可见性的角度来看,以下静态方法“包含”是否安全?

    public class MyTest {
private static final HashSet<String> mySet= new HashSet<String>();

static {
mySet.add("cat");
mySet.add("dog");
mySet.add("bird");
}

public static boolean contains(String key) {
return mySet.contains(key);
}
}

那么,如果多个线程调用 MyTest.contains(string),它们是否能保证看到 mySet 的正确内容?

我的想法是肯定的,因为它是一个最终引用,其中所有数据都添加到静态 block 中的集合(并且以后不会更改)。

最佳答案

是的,那是线程安全的。 static 初始化 block 在类初始化时运行,that is done behind a lock .因此 mySet 在发布(可用)之前已完全初始化。所有线程都会看到它完全构建。

关于java - 这在 Java 中是线程安全的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30315509/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com