如何以安全有效的方式使用AtomicReference进行惰性创建和设置?
2022-09-03 00:59:23
我希望懒惰地创建一些东西并将结果缓存为优化。下面的代码是安全有效的,还是有更好的方法来做到这一点?这里是否需要比较和设置循环?
...
AtomicReference<V> fCachedValue = new AtomicReference<>();
public V getLazy() {
V result = fCachedValue.get();
if (result == null) {
result = costlyIdempotentOperation();
fCachedValue.set(result);
}
return result;
}
编辑:我在这里的例子中从coeplyIdempotentOperation()设置的值总是相同的,无论什么线程调用它。