Rumah  >  Artikel  >  Java  >  Bagaimana untuk Cekap Menunggu Senarai Niaga Hadapan dan Mengendalikan Pengecualian?

Bagaimana untuk Cekap Menunggu Senarai Niaga Hadapan dan Mengendalikan Pengecualian?

Linda Hamilton
Linda Hamiltonasal
2024-10-26 00:48:28889semak imbas

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

Menunggu dengan Cekap pada Senarai Niaga Hadapan

Apabila berurusan dengan senarai niaga hadapan, matlamatnya adalah untuk menunggu sehingga selesai atau berlakunya pengecualian pada mana-mana masa hadapan. Pendekatan naif yang melibatkan panggilan individu ke f.get() boleh membawa kepada menunggu yang tidak perlu jika pengecualian berlaku lebih awal.

Mengelakkan Penantian Tidak Perlu dengan CompletionService

Untuk menangani perkara ini isu, kelas CompletionService mula dimainkan. Ia membolehkan tugas tak segerak dilaksanakan dan keputusannya dapat diperoleh semula dengan cara selamat benang apabila ia tersedia. Begini cara untuk menggunakannya:

<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>

Dengan menggunakan pendekatan CompletionService, anda boleh memantau penyiapan tugasan dalam masa nyata dan menghentikan pemprosesan selanjutnya jika ralat berlaku, sekali gus mengelakkan menunggu yang tidak perlu.

Atas ialah kandungan terperinci Bagaimana untuk Cekap Menunggu Senarai Niaga Hadapan dan Mengendalikan Pengecualian?. 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