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

Sự khác nhau giữa phương thức wait () và sleep () trong Java?


Phương thức sleep () tĩnh phương pháp của Chủ đề và nó có thể gửi luồng đang chạy hiện tại sang trạng thái “ Không chạy được” trong khi đợi () phương thức là một phương thức thể hiện, chúng tôi đang gọi nó bằng cách sử dụng đối tượng luồng và nó chỉ bị ảnh hưởng đối với đối tượng đó. Ngủ () đánh thức phương thức sau khi hết thời gian hoặc gọi ngắt () phương thức trong khi wait () đánh thức phương thức sau khi hết thời gian hoặc gọi thông báo () hoặc allowAll () phương pháp. Ngủ () phương thức không giải phóng bất kỳ khóa hoặc ẩn danh nào r trong khi chờ đợi trong khi đợi () phương pháp giải phóng khóa hoặc màn hình trong khi chờ đợi.

Cú pháp cho phương thức sleep ()

public static void sleep(long millis) throws InterruptedException

Cú pháp cho phương thức wait ()

public final void wait() throws InterruptedException

Ví dụ

public class ThreadTest implements Runnable {
   private int number = 10;
   public void methodOne() throws Exception {
      synchronized(this) {
         number += 50;
         System.out.println("Number in methodOne(): " + number);
      }
   }
   public void methodTwo() throws Exception {
      synchronized(this) {
         Thread.sleep(2000); // calling sleep() method 
         this.wait(1000); // calling wait() method
         number *= 75;
         System.out.println("Number in methodTwo(): " + number);
      }
   }
   public void run() {
      try {
         methodOne();
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
   public static void main(String[] args) throws Exception {
      ThreadTest threadTest = new ThreadTest();
      Thread thread = new Thread(threadTest);
      thread.start();
      threadTest.methodTwo();
   }
}

Đầu ra

Number in methodOne(): 60
Number in methodTwo(): 4500