Thread.join()

Ví dụ trong main thread có khởi tạo và chạy 2 thread1 và thread2

nếu main thread gọi thread1.join() --> đồng nghĩa với việc main thread sẽ chạy tới câu lệnh Thread1.join() sau đó nó sẽ dừng lại và không chạy tiếp các câu lệnh bên dưới. Nó sẽ chờ cho Thread1 hoàn thành rồi nó mới chạy tiếp.

Ví dụ thực tế cho dễ hiểu.

Bạn cần in một chương trình tính Tích giai thừa từ 1 đến 100

và bạn có 2 người(2 CPU có khả năng tính toán) song song

như vậy bạn sẽ lập một chương trình 

Thread t1 tính tích 1-> 50
Thread t2 tính tích 51-> 100

Và sau khi tính song thì bạn sẽ in kết quả ra màn hình  t1.result * t2.result

Nhưng vấn đề là nếu bạn start t1 và start t2 cùng một lúc thì chương trình sẽ chạy và in ra tích t1.result* t2.result ngay sau đó trong khi t1 và t2 vẫn đang tính toán

vậy làm thế nào để in ra kết quả khi cả 2 tính toán xong

ngay sau khi bạn gọi t1.start và t2.start

bạn phải gọi t1.join() và t2.join() ngay sau đó. Điều đó có nghĩa là chương trình main thread nó sẽ tạm dừng cho t1 thực hiện xong rồi nó mới gọi t2.join() và chờ t2 thực hiện xong rồi nó mới gọi câu lệnh in kết quả

Vậy khi một Thread cha gọi một thread con .join() đồng nghĩa với việc Thread con thực hiện xong thì Thread cha mới gọi các câu lệnh tiếp theo sau câu lệnh join() đó

Comments

Popular posts from this blog

Fixing the DeepSpeed Import Error While Fine-Tuning the Qwen Model

Amazon Linux 2023 - User data configuration for launch templates to connect to the EKS cluster

How to create ISM policy and rotate logs in opensearch