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
Lepaskan: 2024-10-26 00:54:02
asal
972 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan