Rumah  >  Artikel  >  Java  >  Bagaimana untuk Memastikan Penamatan Tugas Apabila Mematikan Perkhidmatan Pelaksana Java?

Bagaimana untuk Memastikan Penamatan Tugas Apabila Mematikan Perkhidmatan Pelaksana Java?

Barbara Streisand
Barbara Streisandasal
2024-10-24 07:39:02822semak imbas

How to Ensure the Termination of Tasks When Shutting Down a Java ExecutorService?

Strategi Penamatan Penutupan Perkhidmatan Pelaksana

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:

  • tutup: Memulakan penutupan teratur, melaksanakan tugasan yang diserahkan sebelum ini dan menolak tugasan baharu.
  • tutup Sekarang: Percubaan untuk menghentikan semua menjalankan tugas dan mengembalikan senarai tugasan yang menunggu pelaksanaan.
  • menunggu Penamatan: Sekat sehingga semua tugas selesai atau sehingga tamat masa atau gangguan berlaku.

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!

Kenyataan:
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