Xem xét thực tế là wait() chỉ có thể được gọi trong một bối cảnh đồng bộ mà sau đó phát hành màn hình cho đến khi một thông báo/nofityAll đã được gọi trên cùng một đối tượng bằng một chủ đề khác,điều gì sẽ xảy ra khi một chuỗi bị gián đoạn trong khi chặn trên một wait()?
Giả sử Chủ đề A đang chặn() mà kết quả trong Chủ đề B có được khóa. Bây giờ nếu chúng ta ngắt đoạn A, điều khiển sẽ được chuyển ngay lập tức sang luồng A không? trong trường hợp này, vì khối try catch xử lý InterrupException nằm trong bối cảnh đồng bộ, và vì chỉ có một Thread có thể giữ màn hình tại một thời điểm, điều gì sẽ xảy ra với Thread B? nó có nên chuyển sang trạng thái bị chặn cho đến khi Thread A đã hoàn thành việc thực thi không?
Cảm ơn trước Advance
+1. Tôi đã tìm kiếm trong tài liệu để chờ() (không có đối số), và nó không được đề cập (và không có liên kết đến phương thức chờ quá tải). Quá tệ. –
ah! tôi không thấy lời giải thích trong java 6 doc http://bit.ly/tNJ1VT. anyway, trong trường hợp đó tôi đoán Chủ đề A PHẢI kiểm tra lại tình trạng điều kiện khi nhận được Ngoại lệ trước khi tiếp tục thêm bất kỳ –
@arun_suresh: Như tôi đã nói, đó là trong thời gian chờ (long) javadoc: http://download.oracle.com/javase /6/docs/api/java/lang/Object.html#wait%28long%29. Một ngắt thường được sử dụng để làm cho một thread dừng lại. Vì vậy, bạn thường không tiến hành thêm nữa. –