У меня есть класс ПунктЭто безопасная публикация объекта?
class Item {
public int count;
public Item(int count) {
this.count = count;
}
}
Тогда я помещу ссылку на пункт в поле другого класса
class Holder {
public Item item;
public Holder() {
item = new Item(50);
}
}
Может это нового объекта Item безопасно опубликован? Если нет, то почему? Согласно Java Concurrency in Practice, новый Item опубликован , не будучи полностью сконструированным, но, на мой взгляд, новый Item полностью построен: его ссылка this
не исчезает, и ссылка на нее и ее состояние публикуется на том же так что потребительский поток не увидит устаревшего значения. Или это проблема видимости. Я точно не знаю причины.
Интересная статья DW на тему, которая исследует многие проблемы, связанные с синхронизацией: http://www.ibm.com/developerworks/java/library/j-jtp0618/index.html – maksimov
Мне очень жаль, я Забыл! – ohyeahchenzai