gpt4 book ai didi

java - 在多个线程上同步 var 实例化

转载 作者:行者123 更新时间:2023-12-01 23:36:25 25 4
gpt4 key购买 nike

我正在尝试同步像这样的 var 实例化:

Object o = new Object();
String s = null;

void getS() {
if (s != null) {
return s;
}
// multiple threads stopping here
// maybe using readwritelock? write.lock?
syncronize(o) {
// if previous thread stopped by sync block
// completed before, bypass this
if (s != null) {
return s;
}

// no one before, instantiate s
s = "abc";
}
return s;
}

是否有更好的方法来处理 var 的单次实例化?也许使用锁?

最佳答案

声明s volatile

volatile String s;

我们将得到一个经典的双重检查锁定设计模式实现。模式是形式化的最佳实践,因此您无需尝试进一步改进此代码。

顺便说一句,延迟字符串初始化的示例没有任何意义,创建对象应该很昂贵

关于java - 在多个线程上同步 var 实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18615087/

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