Rumah >Java >javaTutorial >Bagaimana untuk Memastikan Penamatan Tugas Apabila Mematikan Perkhidmatan Pelaksana Java?
Soalan:
Bagaimana anda memastikan penamatan tugasan yang dijalankan apabila mematikan Java ExecutorService?
Jawapan:
Dokumentasi Oracle API untuk ExecutorService mengesyorkan pendekatan berikut:
<code class="java">void shutdownAndAwaitTermination(ExecutorService pool) { pool.shutdown(); // Disable new tasks try { // Wait for existing tasks if (!pool.awaitTermination(60, TimeUnit.SECONDS)) { pool.shutdownNow(); // Cancel executing tasks if (!pool.awaitTermination(60, TimeUnit.SECONDS)) System.err.println("Pool did not terminate"); } } catch (InterruptedException ie) { pool.shutdownNow(); Thread.currentThread().interrupt(); } }</code>
Kaedah Berkaitan Penutupan:
Penamatan Dipertingkatkan:
Jika kolam mengambil lebih masa untuk ditutup, anda boleh menukar:
<code class="java">if (!pool.awaitTermination(60, TimeUnit.SECONDS))</code>
kepada:
<code class="java">while (!pool.awaitTermination(60, TimeUnit.SECONDS))</code>
Ini akan diteruskan menunggu selama-lamanya sehingga penamatan dicapai.
Atas ialah kandungan terperinci Bagaimana untuk Memastikan Penamatan Tugas Apabila Mematikan Perkhidmatan Pelaksana Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!