gpt4 book ai didi

java - 如何使用 AtomicBoolean 实现这一点?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:16:37 26 4
gpt4 key购买 nike

如何确保 initialize() 方法只被调用一次?下面是我想重构为使用 AtomicBoolean 的线程不安全版本。 我只想要 initialize() 只被调用一次

if (!initialized) 
{
initialize();
initialized = true;
}

最佳答案

原子 boolean 值对您来说不够,因为即使尚未完成初始化,进入代码块的第二个线程也会失败。试试这个,它会阻塞第二个,仅当第一个尚未完成时才并行,并且在初始化完成后会非常快:

volatile boolean initialized = false;

private final Object LOCK = new Object();

public void ensureInitialized() {
if( !initialized ) {
synchronized(LOCK) {
if( !initialized ) {
initialize();
initialized = true;
}
}
}
}

这也称为双重检查锁定理念,这种方式是正确的。

关于java - 如何使用 AtomicBoolean 实现这一点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5984683/

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