Я не уверен, следует ли использовать ключевое слово volatile для не-примитивов. У меня есть член класса, который устанавливается/назначается одним потоком и доступен другим потоком. Должен ли я объявить этот член изменчивым?
private /* volatile */ Object o;
public void setMember(Object o) {
this.o = o;
}
public Object getMember() {
return o;
}
Здесь setMember(...) вызывается одним потоком, а getMember() вызывается другим.
Если бы это было логическое значение, например, ответ был бы да.
Я использую Java 1.4, и член в этом случае доступен только для чтения. Так что в этом случае меня волнует только видимость, отсюда и мой вопрос о ключевом слове volatile.