Heim > Java > javaLernprogramm > 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
Freigeben: 2024-10-24 07:39:02
Original
903 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

in:

<code class="java">while (!pool.awaitTermination(60, TimeUnit.SECONDS))</code>
Nach dem Login kopieren

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!

Quelle:php
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage