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;}
}
示されているコードのように、created-thread はメイン スレッド ステータス オブジェクトを共有しています。created-thread が「setStatus」を呼び出すと、CPU キャッシュ、メイン スレッド、created-thread がステータス オブジェクトを独自のキャッシュにロードするため、スレッド セーフではないと思います。メソッドはキャッシュデータのみを更新し、メインスレッドは現在更新されたデータを見ることができません。したがって、同期が必要です。私は正しく理解していますか?