在实践中阅读Java并发,第3.5节:提出索赔
public Holder holder;
public void initialize() {
     holder = new Holder(42);
}
除了创建2个Holder实例的明显线程安全危险之外,本书声称可能会出现一个可能的发布问题,对于Holder类来说更是如此
public Holder {
    int n;
    public Holder(int n) { this.n = n };
    public void assertSanity() {
        if(n != n)
             throw new AssertionError("This statement is false.");
    }
}
可以抛出AssertionError!
这怎么可能 ?我能想到的唯一可以允许这种荒谬的行为是,如果Holder构造函数不会被阻塞,那么当构造函数代码仍在不同的线程中运行时,将为该实例创建一个引用.这可能吗 ?