public class Main {
public static void main(String[] args) {
Status status = new Status();
new Thread(new Runnable() {
@Override
public void run() {
status.setStatus(true);
}
}).start();
}
}
class Status {
boolean status = false;
public void setStatus(boolean status) {
this.status = status;
}
public boolean getStatus() {return status;}
}
如代码所示,创建线程共享主线程状态对象。我认为它不是线程安全的,由于cpu缓存,主线程和创建线程将状态对象加载到自己的缓存中,当创建线程调用'setStatus'时方法它只更新它的缓存数据,主线程现在看不到更新的数据。所以需要同步。我理解正确吗?