次のコードを検討してください。
class Foo {
java.util.Timer timer = new java.util.Timer();
void doAction() {
...
timer.schedule(new SomeTimerTask(), 0L);
...
}
void cancelAction() {
timer.cancel();
}
}
メソッドは異なるスレッドから呼び出されます。メソッド doAction() が最初に呼び出されます。
timer
フィールドvolatile
が別のスレッドから見えるよう に宣言する必要がありますか?