我认为您的困惑是作者安全发表的意思。他指的是非空资源的安全发布,但是您似乎明白了。
您的问题很有趣-是否可以返回资源的空缓存值?
是。
允许编译器像这样重新排序操作
public static Resource getInstance(){ Resource reordered = resource; if(resource != null){ return reordered; } return (resource = new Resource());}这不违反顺序一致性规则,但可以返回空值。
这是否是最好的实现尚待争论,但没有规则可以阻止这种重新排序。



