Rumah > Java > javaTutorial > Bagaimana untuk Cekap Menunggu Penyusunan Benang Perkhidmatan Pelaksana Tanpa Gelung Infinite?

Bagaimana untuk Cekap Menunggu Penyusunan Benang Perkhidmatan Pelaksana Tanpa Gelung Infinite?

Linda Hamilton
Lepaskan: 2024-12-14 17:41:16
asal
147 orang telah melayarinya

How to Efficiently Wait for ExecutorService Thread Completion Without Infinite Loops?

Menunggu Penyiapan Benang dengan ExecutorService

Apabila melaksanakan berbilang tugas secara serentak menggunakan ExecutorService, adalah penting untuk mengendalikan pemberitahuan penyiapan dengan berkesan. Artikel ini meneroka pendekatan terbaik untuk menunggu semua urutan selesai tanpa bergantung pada gelung tak terhingga.

Seperti yang diterangkan dalam masalah, gelung tak terhingga tidak dianggap sebagai penyelesaian yang optimum. Sebaliknya, ExecutorService menyediakan mekanisme terbina dalam untuk mengurus penyiapan tugas: kaedah shutdown() dan awaitTermination().

Menggunakan shutdown() dan awaitTermination()

Antara muka ExecutorService menawarkan kaedah shutdown(), yang memberi isyarat kepada ExecutorService untuk tidak lagi menerima yang baru tugasan. Setelah semua tugasan yang diserahkan pada masa ini telah selesai, ExecutorService akan ditamatkan.

Untuk menunggu tugasan selesai, kaedah awaitTermination() digunakan. Kaedah ini mengambil dua parameter:

  • tamat masa: Menentukan masa maksimum untuk menunggu tugasan selesai.
  • Unit masa: Unit masa tamat masa.

Dalam contoh yang disediakan dalam soalan, kod boleh diubah suai seperti berikut:

ExecutorService taskExecutor = Executors.newFixedThreadPool(4);
while(...) {
  taskExecutor.execute(new MyTask());
}
taskExecutor.shutdown();
try {
  taskExecutor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
} catch (InterruptedException e) {
  ...
}
Salin selepas log masuk

The Long.MAX_VALUE tamat masa memastikan kaedah awaitTermination() disekat sehingga semua tugasan selesai. Jika penyiapan tugas adalah sensitif masa, tamat masa terhingga boleh ditentukan.

Kesimpulan

Menggunakan kaedah shutdown() dan awaitTermination() menyediakan cara yang boleh dipercayai dan cekap untuk menunggu semua benang selesai tanpa menggunakan gelung tak terhingga. Pendekatan ini memudahkan pengurusan tugasan dan memastikan penyiapan rangkaian dengan cara terkawal.

Atas ialah kandungan terperinci Bagaimana untuk Cekap Menunggu Penyusunan Benang Perkhidmatan Pelaksana Tanpa Gelung Infinite?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan