"Hello, Amigo! Saya lihat anda sedang membuat kemajuan yang hebat dalam mempelajari tentang benang."

"Lagipun ia tidak begitu sukar."

Itu hebat! Hari ini anda mempunyai pelajaran yang mudah, dan topiknya ialah kaedah gabungan .

Bayangkan situasi berikut: benang utama telah mencipta benang kanak-kanak untuk melaksanakan beberapa tugas. Masa berlalu, dan kini benang utama memerlukan hasil kerja yang dilakukan oleh benang kanak-kanak. Tetapi benang kanak-kanak masih belum selesai kerjanya. Apa yang perlu dilakukan oleh benang utama?

Soalan yang baik. Apa yang perlu dilakukan oleh benang utama?

"Ini adalah tujuan kaedah gabungan . Ia membolehkan kami membuat satu utas menunggu sementara satu lagi utas menyelesaikan kerjanya:"

Kod Penerangan
class Printer implements Runnable
{
private String name;
public Printer(String name)
{
this.name = name;
}
public void run()
{
System.out.println("I’m " + this.name);
}
}
Kelas yang melaksanakan antara muka Runnable.
public static void main(String[] args)
{
Printer printer1 = new Printer("Nick");
Thread thread1 = new Thread(printer1);
thread1.start();

thread1.join();
}
Benang utama mencipta benang kanak-kanak – benang1 .

Kemudian ia memulakannya dengan memanggil thread1 .start();

Dan kemudian ia menunggu untuk ia selesai – thread1.join();

Satu utas boleh memanggil kaedah gabungan pada objek Benang kedua. Akibatnya, utas pertama (yang dipanggil kaedah) menghentikan kerjanya sehingga utas kedua (yang kaedah gabungan objeknya dipanggil) selesai.

Kita perlu membezakan antara dua perkara di sini: kita mempunyai benang (persekitaran pelaksanaan yang berasingan) dan kita mempunyai objek Thread.

"Itu sahaja?"

"Ya."

"Tetapi kenapa kita perlu mencipta benang dan kemudian segera menunggu untuk selesai?"

"Ia mungkin tidak perlu segera. Ia mungkin selepas beberapa lama berlalu. Selepas memulakan utas anak pertamanya, utas utama boleh menetapkan lebih banyak tugas kepada utas lain (dengan menciptanya dan memanggil kaedah mula ). Kemudian apabila ia tidak mempunyai apa-apa kerja lagi, ia perlu memproses hasil utas anak pertama. Apabila anda perlu menunggu utas lain selesai berfungsi, anda perlu memanggil kaedah gabungan ."

"Faham."