Tôi đã đọc rằng Thread.sleep()
sẽ tạm dừng luồng hiện đang chạy trong khoảng thời gian được chỉ định sau khi nó quay trở lại trạng thái runnable chờ đến lượt nó chạy.gọi Thread.sleep() từ bối cảnh được đồng bộ trong Java
Ngoài ra, nếu được gọi từ ngữ cảnh synchronized
, sleep()
sẽ không giải phóng khóa mà nó giữ. Vì vậy, tôi đã tự hỏi khi nào nó sẽ giải phóng khóa. Nếu thread, đưa vào giấc ngủ, không bao giờ có cơ hội để chạy vì vậy nó sẽ luôn luôn giữ cho khóa với chính nó và sau đó làm thế nào các chủ đề khác có được nhập vào đồng bộ phương pháp/khối.
Tôi không chắc chắn nếu tôi đang đặt câu hỏi hợp lệ. Nhưng hãy giúp tôi.
Thực sự, gọi 'Thread.sleep()' có thể không phải là một ý tưởng hay. Nếu có điều gì đó bạn có thể làm bây giờ, bạn nên làm ngay bây giờ. Nếu bạn phải chờ đợi một cái gì đó trước khi có bất cứ điều gì bạn có thể làm, bạn nên chờ đợi cho rằng một cái gì đó chứ không phải là ngủ. –
@DavidSchwartz: Tôi đồng ý. Mặc dù có sử dụng hợp pháp cho 'Thread.sleep()', nó thường được sử dụng ở nơi không nên. – NPE
Cũng giải thích, nhưng nói "Để tóm tắt, gọi Thread.sleep() từ một khối đồng bộ có thể không phải là một ý tưởng tốt." đang đi quá xa. Đôi khi bạn muốn chờ và giữ khóa. – Jesus