Menunggu Penyiapan Berbilang Benang
Dalam senario yang telah anda huraikan, di mana berbilang rangkaian dicipta dan setiap satu menjalankan tugas yang sama secara bebas , ia menjadi perlu untuk mencari jalan untuk menjeda utas utama sehingga semua utas yang dihasilkan telah selesai dilaksanakan. Ini penting untuk memastikan penyelarasan yang betul dan menghalang utas utama daripada meneruskan sebelum utas sekunder selesai.
Satu penyelesaian yang berkesan melibatkan mencipta pelbagai objek Thread untuk menyimpan semua utas yang dihasilkan, memulakannya secara serentak, dan kemudian melaksanakan gelung yang memanggil kaedah join() pada setiap utas dalam tatasusunan. Kaedah join() menyekat urutan panggilan sehingga urutan yang dipanggil apabila keluar.
Dengan memasukkan gelung ini ke dalam kelas DoSomethingInAThread anda, anda boleh menunggu dengan pasti semua urutan sekunder selesai sebelum meneruskan pelaksanaan utas utama:
<code class="java">// Array to store created threads private static Thread[] threads; public static void main(String[] args) { // Create an array to store the threads threads = new Thread[1000]; // Start all the threads for (int n = 0; n < 1000; n++) { Thread t = new Thread(new DoSomethingInAThread()); t.start(); // Save the reference to the created thread threads[n] = t; } // Wait for all threads to complete for (int i = 0; i < threads.length; i++) { threads[i].join(); }</code>
Dengan mengubah suai kaedah main() seperti yang ditunjukkan di atas, utas utama hanya akan diteruskan setelah semua utas sekunder selesai melaksanakan. Teknik ini memastikan pelaksanaan utas utama disegerakkan dengan penyiapan semua utas anaknya.
Atas ialah kandungan terperinci Bagaimana untuk Memastikan Pelaksanaan Benang Utama Selepas Berbilang Benang Selesai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!