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!