gpt4 book ai didi

java - 在 Java 中,是否需要将简单赋值同步到静态?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:46:31 25 4
gpt4 key购买 nike

如果我使用简单的赋值初始化变量并且我不关心可能发生的多重初始化的可能性,那么是否需要同步?

像这样:

public class Something {

private static volatile Collection<String> data;

protected static Collection<String> data() {
if (data == null) {
final Set<String> dataToSet = new HashSet<String>();
dataToSet.add("value 1");
dataToSet.add("value 2");
data = dataToSet;
}
return data;
}
}

最佳答案

赋值操作是原子的。接下来,您可以使用 volatile 修饰符来确保读取/写入之间的happens-before 关系。因此,这里不需要同步

当您需要防止其他线程破坏您的数据时使用同步(通过锁定对象的监视器并确保只有一个线程可以同时进入关键代码块)

关于java - 在 Java 中,是否需要将简单赋值同步到静态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26522937/

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