非プリミティブにも volatile キーワードを使用する必要があるかどうかはわかりません。あるスレッドによって設定/割り当てられ、別のスレッドによってアクセスされるクラスメンバーがあります。このメンバーを volatile と宣言する必要がありますか?
private /* volatile */ Object o;
public void setMember(Object o) {
this.o = o;
}
public Object getMember() {
return o;
}
ここでは、setMember(...) が 1 つのスレッドによって呼び出され、getMember() が別のスレッドによって呼び出されます。
たとえば、ブール値の場合、答えは「はい」になります。
私は Java 1.4 を使用しており、この場合のメンバーは読み取り専用です。したがって、この場合は可視性のみを気にしているので、volatile キーワードについて質問します。