Future.cancel (false) sollte meiner Meinung nach nur dann true zurückgeben, wenn es tatsächlich möglich war, die Ausführung der Aufgabe zu verhindern.Future.cancel (false) gibt für Ausführung der Aufgabe "true" zurück
Aber vom Code unten können wir sehen, dass es widerspricht.
Da die Aufgabe abgesagt wird es nicht "Not expecting this statement!!!"
public class Test {
public static void main(String[] args) throws InterruptedException {
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
final boolean[] canceled = { false };
ScheduledFuture<?> future = executor.schedule(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
if (canceled[0])
System.out.println("Not expecting this statement!!!");
} catch (InterruptedException e) {
}
}
}, 0, TimeUnit.SECONDS);
Thread.sleep(100);
canceled[0] = future.cancel(false);
executor.shutdown();
executor.awaitTermination(2, TimeUnit.SECONDS);
}
}
Leider Ausgabe dieses Programms drucken soll, ist „diese Aussage nicht erwarten !!!“
Kann jemand dieses Verhalten erklären.
In meinem Fall ist es wahr. Daher wird die Frage ausgelöst –
Versuchen Sie, die Ruhezeit in der Hauptmethode zu erhöhen. Sie könnten verschiedene Antworten sehen – prasanth
Wer gab +1 auf diese Frage so schnell, es bekam +1 in seinen ersten 15 Sekunden ... –