Frage:
Wie stellen Sie die Beendigung laufender Aufgaben beim Herunterfahren eines Java sicher? ExecutorService?
Antwort:
Die Oracle-API-Dokumentation für ExecutorService empfiehlt den folgenden Ansatz:
<code class="java">void shutdownAndAwaitTermination(ExecutorService pool) { pool.shutdown(); // Disable new tasks try { // Wait for existing tasks if (!pool.awaitTermination(60, TimeUnit.SECONDS)) { pool.shutdownNow(); // Cancel executing tasks if (!pool.awaitTermination(60, TimeUnit.SECONDS)) System.err.println("Pool did not terminate"); } } catch (InterruptedException ie) { pool.shutdownNow(); Thread.currentThread().interrupt(); } }</code>
Methoden zum Herunterfahren:
Erweitertes Warten auf Beendigung:
Wenn das Herunterfahren des Pools länger dauert, können Sie Folgendes ändern:
<code class="java">if (!pool.awaitTermination(60, TimeUnit.SECONDS))</code>
in:
<code class="java">while (!pool.awaitTermination(60, TimeUnit.SECONDS))</code>
Dies wird fortgesetzt Warten auf unbestimmte Zeit, bis die Beendigung erreicht ist.
Das obige ist der detaillierte Inhalt vonWie kann die Beendigung von Aufgaben beim Herunterfahren eines Java ExecutorService sichergestellt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!