"สวัสดี Amigo! ฉันเห็นว่าคุณกำลังก้าวหน้าอย่างมากในการเรียนรู้เกี่ยวกับเธรด"

"มันไม่ยากเลย"

เยี่ยมมาก! วันนี้คุณมีบทเรียนง่าย ๆ และหัวข้อคือวิธีการเข้าร่วม

ลองนึกภาพสถานการณ์ต่อไปนี้: เธรดหลักได้สร้างเธรดย่อยเพื่อดำเนินการบางอย่าง เวลาผ่านไป และตอนนี้เธรดหลักต้องการผลลัพธ์ของงานที่ดำเนินการโดยเธรดย่อย แต่เธรดลูกยังทำงานไม่เสร็จ เธรดหลักควรทำอย่างไร

คำถามที่ดี. เธรดหลักควรทำอย่างไร

"นี่คือ วิธีการ เข้าร่วมมันช่วยให้เราสามารถรอหนึ่งเธรดในขณะที่อีกเธรดทำงานเสร็จ:"

รหัส คำอธิบาย
class Printer implements Runnable
{
private String name;
public Printer(String name)
{
this.name = name;
}
public void run()
{
System.out.println("I’m " + this.name);
}
}
คลาสที่ใช้อินเทอร์เฟซที่รันได้
public static void main(String[] args)
{
Printer printer1 = new Printer("Nick");
Thread thread1 = new Thread(printer1);
thread1.start();

thread1.join();
}
เธรดหลัก สร้างเธรดย่อย – thread1

จากนั้นจะเริ่มโดยการเรียกthread1 .start();

จากนั้นรอให้เสร็จสิ้น – thread1.join();

หนึ่งเธรดสามารถเรียก วิธี การเข้าร่วมบนวัตถุเธรดของเธรดที่สอง เป็นผลให้เธรดแรก (ซึ่งเรียกว่าเมธอด) หยุดทำงานจนกว่าเธรดที่สอง (ซึ่งเรียกเมธอดการรวมของอ็อบเจกต์) จะเสร็จสิ้น

เราจำเป็นต้องแยกความแตกต่างระหว่างสองสิ่งนี้: เรามีเธรด (สภาพแวดล้อมการดำเนินการที่แยกต่างหาก) และเรามีวัตถุเธรด

"แค่นั้นแหละ?"

"ใช่."

"แต่ทำไมเราต้องสร้างเธรดแล้วรอให้เสร็จทันที"

"อาจไม่จำเป็นต้องทำทันที อาจเป็นหลังจากเวลาผ่านไป หลังจากเริ่มเธรดลูกชุดแรก เธรดหลักสามารถมอบหมายงานเพิ่มเติมให้กับเธรดอื่น ๆ (โดยการสร้างและเรียกใช้ เมธอด start ) จากนั้นเมื่อมัน ไม่มีงานเหลือ ต้องประมวลผลผลลัพธ์ของเธรดลูกแรก เมื่อใดก็ตามที่คุณต้องการรอให้เธรดอื่นทำงานให้เสร็จ คุณต้องเรียกเมธอดเข้าร่วม "

"เข้าใจแล้ว."