Rumah >Java >javaTutorial >Bagaimana untuk Mematikan Java ExecutorService Executors dengan betul?
Mematikan Java ExecutorService dengan Anggun
Executors ialah cara mudah untuk mengurus dan melaksanakan tugas secara serentak dalam aplikasi Java. Walau bagaimanapun, penutupan yang tidak betul boleh membawa kepada tingkah laku atau isu prestasi yang tidak dijangka. Panduan ini memberikan penjelasan terperinci tentang cara menutup anExecutorService dengan betul, memastikan semua tugasan ditamatkan atau dibatalkan.
Memahami Penutupan ExecutorService
ExecutorService menawarkan dua kaedah penutupan utama :
Perlu ambil perhatian bahawa penutupan tidak dijamin untuk menamatkan semua tugas. Tugasan yang gagal bertindak balas terhadap gangguan atau mempunyai operasi yang berjalan lama mungkin kekal aktif.
Prosedur Penutupan Disyorkan
Dokumentasi Oracle mencadangkan pendekatan berikut untuk penutupan yang anggun:
<code class="java">void shutdownAndAwaitTermination(ExecutorService pool) { pool.shutdown(); try { // Wait for existing tasks to terminate if (!pool.awaitTermination(60, TimeUnit.SECONDS)) { pool.shutdownNow(); // Wait for tasks to respond to cancellation if (!pool.awaitTermination(60, TimeUnit.SECONDS)) System.err.println("Pool did not terminate"); } } catch (InterruptedException ie) { pool.shutdownNow(); Thread.currentThread().interrupt(); } }</code>
Pendekatan ini memastikan bahawa tugasan sedia ada dibenarkan untuk diselesaikan sambil menghalang penyerahan baharu. Jika proses penutupan mengambil masa lebih lama daripada yang dijangkakan, anda boleh menggantikan
<code class="java">if (!pool.awaitTermination(60, TimeUnit.SECONDS))</code>
dengan
<code class="java">while (!pool.awaitTermination(60, TimeUnit.SECONDS))</code>
untuk terus menunggu tugasan selesai.
Ringkasan Penutupan Kaedah
Atas ialah kandungan terperinci Bagaimana untuk Mematikan Java ExecutorService Executors dengan betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!