Cara Menyegerakkan Pelaksanaan Berbilang Benang
Dalam aplikasi berbilang benang, selalunya perlu untuk menyelaraskan pelaksanaan tugasan selari. Artikel ini meneroka kaedah untuk menunggu sekumpulan urutan selesai sebelum meneruskan.
Masalahnya:
Pertimbangkan kod berikut:
<code class="java">public class DoSomethingInAThread implements Runnable {...} public static void main(String[] args) { for (int n=0; n<1000; n++) { Thread t = new Thread(new DoSomethingInAThread()); t.start(); } // wait for all threads' run() methods to complete before continuing }</code>
Dalam contoh ini, berbilang urutan baharu dicipta dan dimulakan. Walau bagaimanapun, kaedah main() meneruskan pelaksanaan serta-merta, tanpa menunggu urutan ini menyelesaikan tugasan mereka.
Penyelesaian:
Untuk menyegerakkan pelaksanaan, kita boleh mencipta tatasusunan rujukan benang dan kemudian gunakan kaedah join() pada setiap objek utas. Ini menyekat utas semasa sehingga utas sasaran telah menyelesaikan pelaksanaannya:
<code class="java">import java.lang.Thread; public class DoSomethingInAThread implements Runnable {...} public static void main(String[] args) { Thread[] threads = new Thread[1000]; for (int n=0; n<threads.length; n++) { threads[n] = new Thread(new DoSomethingInAThread()); threads[n].start(); } for (Thread t: threads) { t.join(); } }</code>
Dalam kod yang disemak ini, kaedah main() mencipta tatasusunan rujukan utas dan memulakan setiap utas. Ia kemudian memasuki gelung yang memanggil join() pada setiap utas dalam tatasusunan. Ini memastikan bahawa semua urutan menyelesaikan tugas mereka sebelum kaedah main() diteruskan.
Atas ialah kandungan terperinci Bagaimana Menunggu Berbilang Benang untuk Selesai Pelaksanaan Sebelum Meneruskan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!