Heim > Java > javaLernprogramm > Wie kann man effizient auf den Abschluss der ExecutorService-Aufgabe warten?

Wie kann man effizient auf den Abschluss der ExecutorService-Aufgabe warten?

Patricia Arquette
Freigeben: 2024-12-26 06:27:45
Original
445 Leute haben es durchsucht

How to Efficiently Wait for ExecutorService Task Completion?

ExecutorService wartet auf Aufgabenabschluss

In Multithread-Anwendungen muss oft gewartet werden, bis alle an einen ExecutorService übermittelten Aufgaben abgeschlossen sind bevor Sie fortfahren. Während grobe Techniken wie Abfragen oder die ständige Überprüfung eines globalen Aufgabenzählers existieren, stehen effizientere und elegantere Lösungen zur Verfügung.

awaitTermination() und Shutdown()

Der empfohlene Ansatz beinhaltet die Verwendung der Methode „awaitTermination()“ von ExecutorService. Sie können damit eine Zeitüberschreitung festlegen oder auf unbestimmte Zeit warten, bis die Threads abgeschlossen sind. So funktioniert es:

// Create an ExecutorService instance
ExecutorService taskExecutor = Executors.newFixedThreadPool(4);

// Submit tasks as needed
while(...) {
  taskExecutor.execute(new MyTask());
}

// Shutdown the ExecutorService to prevent new tasks from being submitted
taskExecutor.shutdown();

// Wait for threads to complete
try {
  taskExecutor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
} catch (InterruptedException e) {
  // Handle any interruptions
}
Nach dem Login kopieren

Diese Methode blockiert, bis die Threads abgeschlossen sind oder das Timeout erreicht wurde. Sie können auch ein endliches Timeout angeben, wenn Sie möchten, dass die Anwendung nach einer bestimmten Zeitspanne fortgesetzt wird, auch wenn einige Aufgaben noch nicht abgeschlossen sind.

Das obige ist der detaillierte Inhalt vonWie kann man effizient auf den Abschluss der ExecutorService-Aufgabe warten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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