Behandeln von Ausnahmen von Java ExecutorService-Aufgaben mit Callable
Beim Versuch, Ausnahmen von Java ExecutorService-Aufgaben zu verarbeiten, ist es üblich, ThreadPoolExecutor in Unterklassen zu unterteilen und zu überschreiben seine afterExecute-Methode. Dieser Ansatz funktioniert jedoch möglicherweise nicht immer wie erwartet.
Anstatt afterExecute zu überschreiben, sollten Sie die Verwendung von aufrufbaren Aufgaben in Betracht ziehen. Callable.call() ermöglicht das Auslösen geprüfter Ausnahmen, die an den aufrufenden Thread zurückgegeben werden können.
Hier ist ein Beispiel für die Verwendung von Callable:
Callable task = ...; Future future = executor.submit(task); // Perform other tasks while the Callable executes try { future.get(); } catch (ExecutionException ex) { // Process the exception thrown by the Callable ex.getCause().printStackTrace(); }
Wenn Callable.call() eine auslöst Ausnahme, wird sie in eine ExecutionException eingeschlossen und von Future.get() erneut ausgelöst. Dies bietet einen robusteren Ausnahmebehandlungsmechanismus im Vergleich zur Unterklasse ThreadPoolExecutor.
Darüber hinaus gibt Ihnen die Verwendung von Callable die Möglichkeit, die Aufgabe erneut zu senden, wenn die Ausnahme behebbar ist, was eine größere Flexibilität bei der Fehlerbehandlung bietet.
Das obige ist der detaillierte Inhalt vonWie behandelt man Ausnahmen von ExecutorService-Aufgaben mithilfe von Callable?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!