我不确定 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 关键字的问题。