Computer >> Máy Tính >  >> Lập trình >> Java

Sự khác biệt giữa Chờ và Ngủ trong Java

Chờ () - Luồng giải phóng quyền sở hữu màn hình này và đợi cho đến khi một luồng khác thông báo các luồng đang chờ trên màn hình của đối tượng này thức dậy thông qua một cuộc gọi đến phương thức thông báo () hoặc phương thứctifyAll (). Sau đó, chuỗi sẽ đợi cho đến khi nó có thể lấy lại quyền sở hữu màn hình và tiếp tục thực thi.

Ngủ () - Phương thức này khiến luồng hiện đang thực thi ở trạng thái ngủ (tạm thời ngừng thực thi) trong số mili giây đã chỉ định. Chủ đề không mất quyền sở hữu bất kỳ màn hình nào. Nó gửi luồng hiện tại sang trạng thái “Không chạy được” trong một khoảng thời gian nhất định.

Phương thức Phương thức
Sr. Không. Phím Chờ Ngủ
1
Lớp
Wait () thuộc lớp Đối tượng
Sleep () thuộc lớp Thread
2
Bản phát hành khóa
Wait () giải phóng khóa trên một đối tượng
Nó không mở khóa trên một đối tượng
3
Ngữ cảnh cuộc gọi
Wait () có thể được gọi trên chính đối tượng
Sleep () có thể được gọi trên chuỗi
4.
Tình trạng đánh thức
cho đến khi cuộc gọi thông báo (), thông báoAll () từ đối tượng
cho đến khi hết thời gian ít nhất hoặc cuộc gọi bị gián đoạn
5
đánh thức giả
Chương trình có thể nhận được đánh thức giả
Nó sẽ không nhận được đánh thức giả.

Ví dụ về Bản đồ đồng bộ hóa

synchronized(lockedObject){
   while(condition == true){
      lockedObject.wait() //releases lockedObject lock
   }
   Thread.sleep(100); //puts current thread on Sleep
}