Tôi rất bối rối về hai giới thiệu sau đây:Làm thế nào để hiểu được phương thức chờ và thông báo trong Java Thread?
- "Các khối phương pháp chờ đợi thread gọi và từ bỏ khóa màn hình"
- "Phương pháp thông báo cho unblocks một chờ đợi chủ đề nhưng không từ bỏ giám sát khóa "
đây là câu hỏi của tôi:
tôi biết từng đối tượng trong Java có một khóa, nhưng là những gì" Moni tor lock "nghĩa là gì? nó giống như khóa của oject?
Tại sao phương thức thông báo cần phải từ bỏ khóa màn hình?
Nếu tôi cố gắng để làm cho một đối tượng chờ đợi với đoạn mã sau:
class simpleTask extends Thread { int waitingTime; public simpleTask(int waitingTime) { this.waitingTime = waitingTime; } public void run() { synchronized(this) // this is a reference of current object { try { this.wait(waitingTime); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
Giống như mô tả đầu tiên ở trên, được có nghĩa là đối tượng hiện bị chặn bởi từ khóa đồng bộ, và sau đó chờ phương pháp giải phóng khóa?
Cảm ơn câu trả lời của bạn! Nhưng trong giải thích của bạn: "Khi bạn gọi someObject.wait() khóa của thread trên someObject được phát hành ... và sau đó được trả lời trước khi cuộc gọi wait() trả về", ai sẽ trả lời khóa trước khi cuộc gọi wait() trả về? Cảm ơn một lần nữa! –
@Miles Zhang: Cùng một luồng sẽ phản hồi lại, miễn là nó có sẵn (nghĩa là một số luồng khác chưa có được nó). – Tudor
@MilesZhang - đã cập nhật câu trả lời để làm rõ. –