java - ключевое слово volatile также для непримитивов

Я не уверен, следует ли использовать ключевое слово volatile для не-примитивов. У меня есть член класса, который устанавливается/назначается одним потоком и доступен другим потоком. Должен ли я объявить этот член изменчивым?

private /* volatile */ Object o;

public void setMember(Object o) {
    this.o = o;
}

public Object getMember() {
    return o;
}

Здесь setMember(...) вызывается одним потоком, а getMember() вызывается другим.

Если бы это было логическое значение, например, ответ был бы да.

Я использую Java 1.4, и член в этом случае доступен только для чтения. Так что в этом случае меня волнует только видимость, отсюда и мой вопрос о ключевом слове volatile.

14
задан John T. 15 May 2012 в 20:25
поделиться