Không có gì sai với join()
. Nó là tốt như nó được.
Tuy nhiên, đây là lý do tại sao bạn không nên kiến trúc sư ứng dụng của bạn dựa vào tham gia. Trong Java, trừu tượng chính cho các tác vụ đang chạy không phải là Thread nữa. Đó là Executor
. Đó là bạn quấn các tác vụ đồng thời là Callable
và chỉ cần gửi nó đến một số Executor
mà không phải lo lắng về chi tiết thực thi. Đây là cách hoạt động của Executor
. Bạn submit
hoặc execute
a Callable
hoặc Runnable
tương ứng và không cần chỉ định Chủ đề.
Vì vậy, tôi muốn biết tại sao không sử dụng join()?
Sau đó, đây là lý do của bạn: Vì bạn không tạo hoặc thao tác Chủ đề trong thế giới công nhân, không có điểm nào khi sử dụng join
. Hầu hết mọi join
đều có thể được thay thế bằng một thứ khác (Future.get
, CountDownLatch
, Locks
, v.v ...).
Lưu ý: Tôi không nói rằng bạn không cần thao tác Chủ đề khi sử dụng Executors. Trong một số trường hợp, tốt hơn nên tạo phân lớp Thread riêng và sau đó có Executor sử dụng chúng thông qua ThreadFactory
.
Không có gì sai với nó, nếu bạn cần phải chờ các chủ đề hoàn thành. Đó là những gì nó cho. – xagyg
Tôi giả sử rằng các chuỗi của bạn chưa bao giờ hoàn thành, nó sẽ tạm dừng (không khóa) chủ đề chính vô thời hạn, nhưng đó không phải là vấn đề với 'join', đó là vấn đề với chương trình của bạn. – xagyg
Hãy hỏi các 'nhà phát triển cao cấp' những gì họ đang nói về. Có lẽ những gì họ thực sự có nghĩa là không chờ đợi cho các chủ đề khác để kết thúc ở tất cả. Ai biết? Tại sao bạn hỏi ở đây? – EJP