Sicherstellung des ordnungsgemäßen Herunterfahrens von Java ExecutorService
Executors in Java bieten eine bequeme Möglichkeit, asynchrone Aufgaben zu verwalten. Das Herunterfahren eines Executors kann jedoch eine Herausforderung darstellen, insbesondere wenn es um lang laufende oder nicht reagierende Aufgaben geht.
Problem:
Beachten Sie den Codeausschnitt:
<code class="java">ExecutorService exec = Executors.newSingleThreadExecutor(); // ... create and submit tasks exec.shutdownNow();</code>
Nachdem alle Aufgaben abgeschlossen sind, bleibt exec.isTerminated() falsch, was darauf hinweist, dass einige Aufgaben möglicherweise nicht ordnungsgemäß beendet wurden.
Lösung:
Oracle wird empfohlen Ansatz ist die Methode „shutdownAndAwaitTermination“:
<code class="java">void shutdownAndAwaitTermination(ExecutorService pool) { pool.shutdown(); try { // Wait for existing tasks to terminate (up to 60 seconds) if (!pool.awaitTermination(60, TimeUnit.SECONDS)) { pool.shutdownNow(); // Wait for cancelled tasks to respond (up to 60 seconds) if (!pool.awaitTermination(60, TimeUnit.SECONDS)) { System.err.println("Pool did not terminate"); } } } catch (InterruptedException ie) { pool.shutdownNow(); Thread.currentThread().interrupt(); } }</code>
Zusammenfassung der Methoden zum Herunterfahren:
Durch die Verwendung der entsprechenden Methoden zum Herunterfahren können Sie sicherstellen, dass Ihr ExecutorService ordnungsgemäß beendet wird, Ressourcen freigegeben und sichergestellt werden ein sauberer Shutdown.
Das obige ist der detaillierte Inhalt vonWie kann das ordnungsgemäße Herunterfahren von Java ExecutorServiceExecutors sichergestellt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!