我有一个班级项目
class Item {
public int count;
public Item(int count) {
this.count = count;
}
}
然后,我会将 Item 的引用放在其他类的字段中
class Holder {
public Item item;
public Holder() {
item = new Item(50);
}
}
这个新的 Item对象可以安全地发布吗?如果不是,为什么?根据 Java Concurrency in Practice ,新 Item 是在没有完全构造的情况下发布的,但在我看来,新 Item 是完全构造的:它的this
引用不会转义,并且对它的引用和它的状态是同时发布的,所以消费者线程不会看到陈旧的值。或者是可见性问题。我不完全知道原因。