Warum wird mein Boolean nicht korrekt aktualisiert?Java - Boolean wird nicht richtig aktualisiert
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!");
}
}
}
}
Wenn ich laufen stop() von Stop-Klasse bekam ich "Exception" in der Ausgabe. WARUM? Ich ändere den booleschen Wert, also was ist hier los?
1. Bitte erstellen und veröffentlichen Sie einen gültigen [mcve], Code, den wir kompilieren und testen können. 2. Sollte nicht bereit sein, als "flüchtig" gekennzeichnet zu werden? –
Ich habe Variable volatile gemacht und bin mir sicher, dass Declarations.ready = false; Wird ausgeführt –
Und noch haben Sie noch nicht veröffentlicht Ihre MCVE, also wenn dies Ihr Problem nicht gelöst hat, machen Sie es schwierig, wenn nicht unmöglich für uns, Ihnen zu helfen, oder für Ihre Frage zukünftigen Besuchern mit ähnlichen Problemen zu helfen . –