Menunggu Penamatan Awal untuk Senarai Niaga Hadapan
Apabila berurusan dengan tugas tak segerak yang diwakili oleh niaga hadapan, selalunya penting untuk menunggu sehingga semua pemprosesan selesai selesai atau ralat berlaku. Walau bagaimanapun, menunggu tanpa perlu untuk semua tugasan selesai walaupun selepas ralat telah berlaku adalah tidak diingini.
Untuk menangani isu ini, pertimbangkan langkah berikut:
Gunakan a CompletionService:
Pantau Niaga Hadapan Secara Berurutan:
Batalkan Baki Tugasan:
Berikut ialah contoh yang menunjukkan pendekatan ini:
<code class="java">Executor executor = Executors.newFixedThreadPool(4); CompletionService<SomeResult> completionService = new ExecutorCompletionService<SomeResult>(executor); // 4 tasks for(int i = 0; i < 4; i++) { completionService.submit(new Callable<SomeResult>() { public SomeResult call() { // Processing code return result; } }); } int received = 0; boolean errors = false; while(received < 4 && !errors) { Future<SomeResult> resultFuture = completionService.take(); // Blocks until available try { SomeResult result = resultFuture.get(); received ++; // Process the result } catch(Exception e) { // Log or handle the error errors = true; } if (errors) { // Cancel any remaining tasks executor.shutdown(); break; } }</code>
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Ralat dan Penamatan Awal Dengan Cekap Apabila Bekerja dengan Niaga Hadapan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!