„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > 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?

Veröffentlicht am 02.11.2024
Durchsuche:898

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 zum Abschluss oder Eintritt 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ühzeitig 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:

Executor executor = Executors.newFixedThreadPool(4);
CompletionService completionService = new ExecutorCompletionService(executor);

// Submit tasks to the service
for (int i = 0; i () {
        @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  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

Mit dem CompletionService-Ansatz können Sie den Abschluss von Aufgaben in Echtzeit überwachen und die weitere Verarbeitung stoppen, wenn ein Fehler auftritt, wodurch unnötige Wartezeiten vermieden werden.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3