t.start()
là phương thức mà thư viện cung cấp cho mã của bạn để gọi khi bạn muốn một luồng mới.
r.run()
là phương thức mà bạn cung cấp cho thư viện để gọi trong luồng mới.
Hầu hết các câu trả lời này đều bỏ lỡ bức tranh lớn, đó là, theo như ngôn ngữ Java có liên quan, không có sự khác biệt giữa t.start()
vàr.run()
hơn là giữa hai phương thức khác.
Cả hai chỉ là phương pháp. Cả hai đều chạy trong chuỗi gọi chúng . Cả hai đều làm bất cứ điều gì họ được mã hóa để làm, và sau đó cả hai trở về, vẫn trong cùng một chủ đề, với người gọi của họ.
Sự khác biệt lớn nhất là hầu hết các mã cho t.start()
là mã gốc trong khi, trong hầu hết các trường hợp, mã chor.run()
sẽ là tinh khiết Java. Nhưng đó không phải là nhiều sự khác biệt. Mã là mã. Mã gốc khó tìm hơn và khó hiểu hơn khi bạn tìm thấy nó, nhưng nó vẫn chỉ là mã cho máy tính biết phải làm gì.
Vậy, cái gì t.start()
làm gì?
Nó tạo ra một chủ đề mới, nó sắp xếp để chủ đề đó gọi t.run()
và sau đó nó báo cho HĐH để cho luồng mới chạy. Rồi nó trở về.
Và cái gì r.run()
làm gì?
Điều buồn cười là, người hỏi câu hỏi này là người đã viết nó . r.run()
làm bất cứ điều gì bạn (tức là, nhà phát triển đã viết nó) đã thiết kế nó để làm.