Rumah > Java > javaTutorial > Bagaimana untuk Cekap Menunggu Penyiapan Tugasan Menggunakan ExecutorService?

Bagaimana untuk Cekap Menunggu Penyiapan Tugasan Menggunakan ExecutorService?

Mary-Kate Olsen
Lepaskan: 2024-12-14 04:41:09
asal
336 orang telah melayarinya

How to Efficiently Await Task Completion Using ExecutorService?

ExecutorService: Menunggu Penyelesaian Tugasan

Apabila memanfaatkan ExecutorService, pembangun mungkin menghadapi keperluan untuk menjeda pelaksanaan sehingga semua tugasan yang diberikan selesai. Siasatan ini meneroka pendekatan paling mudah untuk mencapai objektif ini.

Soalan:

Laksanakan pelbagai tugas pengiraan, satu setiap teras dan jeda pelaksanaan sehingga selesai. Pelaksanaan semasa menggunakan ExecutorService.execute() dan es.wait(), tetapi menghadapi IllegalMonitorStateException.

Jawapan:

Employ ExecutorService.invokeAll(), penyelesaian straightforward(), yang mencapai kefungsian yang diingini dengan satu baris kod:

List<Callable<Object>> todo = new ArrayList<Callable<Object>>(singleTable.size());

for (DataTable singleTable: uniquePhrases) {
    todo.add(Executors.callable(new ComputeDTask(singleTable))); 
}

List<Future<Object>> answers = es.invokeAll(todo);
Salin selepas log masuk

invokeAll() menjeda pelaksanaan sehingga semua tugasan selesai, menjadikan penutupan manual dan menunggu Penamatan() tidak diperlukan. Pendekatan ini sejajar dengan contoh ExecutorService yang boleh diguna semula merentas berbilang pelaksanaan.

Untuk penerokaan lanjut tentang topik berkaitan, rujuk rujukan ini:

  • [SO: Await Thread Completion](URL)
  • [SO: Pemulangan Benang Values](URL)
  • [SO: invokeAll() and Collection>](URL)
  • [SO: Pertimbangan Penyegerakan](URL)

Atas ialah kandungan terperinci Bagaimana untuk Cekap Menunggu Penyiapan Tugasan Menggunakan ExecutorService?. 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