ブール値が正しく更新されないのはなぜですか?Java - ブール値が正しく更新されない
public class Declarations {
public static List<Future<?>> futures = new ArrayList<>(); //it is filled by FutureTasks (about 10)
public static Boolean ready = true;
}
private class Stop {
private void stop() {
Declarations.ready = false;
for(Future<?> f : futures) {
f.cancel(true);
}
}
}
private class FutureTask implements Runnable {
@Override
public void run() {
try {
(...)
} catch (Exception ex) {
if(ready) {
System.out.println("Exception!");
}
}
}
}
Stopクラスからstop()を実行すると、「例外」が発生します。出力に表示されます。 WHY?私は準備ブール値を変更しているので、ここで何が起こっているのですか?
1.実行とテストをコンパイルできる有効な[mcve]コードを作成して投稿してください。 2.「揮発性」と表示されるべきではありませんか? –
私は変数volatileを作りました。私はDeclarations.ready = falseであると確信しています。 –
まだあなたはあなたのMCVEをまだ投稿していないので、もしあなたの問題を解決していなければ、私たちがあなたを助けることは不可能ではないにしても、難しいことです。 。 –