gpt4 book ai didi

java - 创建 volatile 类是否保证 volatile 类变量

转载 作者:行者123 更新时间:2023-12-02 09:37:01 24 4
gpt4 key购买 nike

假设以下单例:

public class Test{
private static volatile Test test = null;
private static int test_int = 0;
private static String test_string = "test";

public int getInt(){
return test_int;
}

public String getString(){
return test_string;
}

private static Test getInstance(){
if(test == null){
synchronized(Test.class){
if(test == null)
test = new Test();
}
}
}

通过将单例实例 Test 声明为 volatile , test_int 和 test_string 也被认为是 volatile 的还是必须如此声明?我想认为,通过使类本身成为 volatile 的,那么该类下的所有内容也将是 volatile 的......但是我对此不确定。提前致谢。

最佳答案

不,它们不被认为是不稳定的。 只有 test 变量是 volatile 的。在获取 test 的值(通过 getInstance)后,其波动性与客户端的其余行为无关。

说实话,我个人会考虑使用 AtomicIntegerAtomicReference 而不是 volatile 。我不知道其他人的情况,但我发现不稳定的行为很难可靠地推理。

请注意,您可能不希望 test_inttest_string 变量是静态的...

关于java - 创建 volatile 类是否保证 volatile 类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5212532/

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