Heim >Java >javaLernprogramm >Wie kann man effizient auf eine Liste von Futures warten und Ausnahmen behandeln?

Wie kann man effizient auf eine Liste von Futures warten und Ausnahmen behandeln?

Linda Hamilton
Linda HamiltonOriginal
2024-10-26 00:48:28991Durchsuche

How to Efficiently Wait for a List of Futures and Handle Exceptions?

Effizientes Warten auf einer Liste von Futures

Beim Umgang mit einer Liste von Futures besteht das Ziel darin, bis zur Fertigstellung oder dem Eintreten von zu warten in Zukunft eine Ausnahme sein. Ein naiver Ansatz mit einzelnen Aufrufen von f.get() kann zu unnötigem Warten führen, wenn eine Ausnahme früh auftritt.

Unnötiges Warten mit CompletionService vermeiden

Um dieses Problem zu beheben Bei diesem Problem kommt die CompletionService-Klasse ins Spiel. Es ermöglicht die Ausführung asynchroner Aufgaben und den Thread-sicheren Abruf ihrer Ergebnisse, sobald sie verfügbar sind. So verwenden Sie es:

<code class="java">Executor executor = Executors.newFixedThreadPool(4);
CompletionService<SomeResult> completionService = new ExecutorCompletionService<>(executor);

// Submit tasks to the service
for (int i = 0; i < 4; i++) {
    completionService.submit(new Callable<SomeResult>() {
        @Override
        public SomeResult call() {
            // Task logic here
            return result;
        }
    });
}

int received = 0;
boolean errors = false;

// Loop until all tasks are complete or an error occurs
while (received < 4 && !errors) {
    Future<SomeResult> resultFuture = completionService.take(); // Blocks if nothing available
    try {
        SomeResult result = resultFuture.get();
        received++;
        // Process result here
    } catch (Exception e) {
        // Log error
        errors = true;
    }
}

// Consider canceling remaining tasks if an error occurred</code>

Durch die Verwendung des CompletionService-Ansatzes können Sie die Erledigung von Aufgaben in Echtzeit überwachen und die weitere Verarbeitung stoppen, wenn ein Fehler auftritt, wodurch unnötige Wartezeiten vermieden werden.

Das obige ist der detaillierte Inhalt vonWie kann man effizient auf eine Liste von Futures warten und Ausnahmen behandeln?. 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