Heim  >  Artikel  >  Java  >  Wie kann die Beendigung von Aufgaben beim Herunterfahren eines Java ExecutorService sichergestellt werden?

Wie kann die Beendigung von Aufgaben beim Herunterfahren eines Java ExecutorService sichergestellt werden?

Barbara Streisand
Barbara StreisandOriginal
2024-10-24 07:39:02822Durchsuche

How to Ensure the Termination of Tasks When Shutting Down a Java ExecutorService?

ExecutorService Shutdown Termination Strategy

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:

  • Herunterfahren: Leitet ein ordnungsgemäßes Herunterfahren ein, führt zuvor übermittelte Aufgaben aus und lehnt neue Aufgaben ab.
  • shutdownNow: Versucht, alles zu stoppen Ausführen von Aufgaben und Zurückgeben einer Liste von Aufgaben, die auf ihre Ausführung warten.
  • awaitTermination: Blockiert, bis alle Aufgaben abgeschlossen sind oder bis eine Zeitüberschreitung oder Unterbrechung auftritt.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn