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