Rumah >Java >javaTutorial >Bagaimanakah saya boleh menguruskan senarai Niaga Hadapan dengan cekap dan mengendalikan pengecualian dalam Java?

Bagaimanakah saya boleh menguruskan senarai Niaga Hadapan dengan cekap dan mengendalikan pengecualian dalam Java?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-26 00:54:02952semak imbas

How can I efficiently manage a list of Futures and handle exceptions in Java?

Mengurus Senarai Niaga Hadapan dengan Cekap dengan Pengendalian Pengecualian

Di Jawa, apabila bekerja dengan niaga hadapan, seseorang mungkin menghadapi keperluan untuk menunggu senarai tugasan masa hadapan untuk diselesaikan semasa mengendalikan sebarang pengecualian yang timbul. Pendekatan mudah untuk ini adalah dengan menunggu secara berurutan untuk setiap masa depan dan menyemak kemungkinan pengecualian. Walau bagaimanapun, pendekatan ini mengalami isu kecekapan jika pengecualian berlaku lebih awal dalam senarai, kerana tugasan berikutnya masih akan menunggu tanpa perlu.

Untuk menangani perkara ini, penyelesaian alternatif memanfaatkan kelas CompletionService. CompletionService menerima niaga hadapan apabila ia tersedia dan membenarkan penamatan awal jika terdapat pengecualian.

Contoh cara melaksanakan pendekatan ini disediakan di bawah:

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

// 4 tasks
for (int i = 0; i < 4; i++) {
    completionService.submit(new Callable<SomeResult>() {
        public SomeResult call() {
            // ... task implementation
            return result;
        }
    });
}

int received = 0;
boolean errors = false;

while (received < 4 && !errors) {
    Future<SomeResult> resultFuture = completionService.take(); // Blocks if none available
    try {
        SomeResult result = resultFuture.get();
        received++;
        // ... do something with the result
    } catch (Exception e) {
        // Log the exception
        errors = true;
    }
}

// Potentially consider canceling any still running tasks if errors occurred</code>

Dengan menggunakan CompletionService , anda boleh menunggu tugasan masa hadapan dengan cekap sambil mengendalikan pengecualian dengan segera.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menguruskan senarai Niaga Hadapan dengan cekap dan mengendalikan pengecualian dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn