关于java并发编程的疑问,对象的不正确发布会导致正确的对象被破坏
这是java并发编程实战里个一个例子:
书本是这么解释的:由于未被正确的发布,因此这个类可能会出现故障
public class Holder{
private int n;
public Holder(int n){
this.n=n;
}
public void assertSanity(){
if(n!=n){
throw new AssertionError("This statement is false");
}
}
}
这个例子是怎么不被正确发布啊,麻烦解释一下
还有下面这个例子也是属于不准确的发布,麻烦也解释一下
public Holder holder;
public void initialize(){
holder=new Holder(42);
}
书上是怎么解释的由于可见性的问题,其他线程看到的holder对象将处于不一致的状态。