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
Post a Comment