首頁 > Java > java教程 > 在Java中,我們什麼時候可以呼叫Thread的wait()和wait(long)方法?

在Java中,我們什麼時候可以呼叫Thread的wait()和wait(long)方法?

WBOY
發布: 2023-09-03 23:41:09
轉載
996 人瀏覽過

在Java中,我們什麼時候可以呼叫Thread的wait()和wait(long)方法?

每當對物件呼叫wait()方法時,它都會導致當前執行緒等待,直到另一個執行緒呼叫notify()notifyAll( ) 該物件的方法,而wait(long timeout) 導致目前執行緒等待,直到另一個執行緒呼叫notify() notifyAll( ) 該物件的方法,或已過了指定的逾時時間。

wait()

在下面的程式中,當 wait() 在物件上調用,執行緒從運行狀態進入等待狀態。它等待其他執行緒呼叫 notify()notifyAll() 才能進入可運行狀態,將會形成死鎖

範例

class MyRunnable implements Runnable {
   public void run() {
      synchronized(this) {
         System.out.println("In run() method");
         try {
            this.wait();
            System.out.println("Thread in waiting state, waiting for some other threads on same object to call notify() or notifyAll()");
         } catch (InterruptedException ie) {
            ie.printStackTrace();
         }
      }
   }
}
public class WaitMethodWithoutParameterTest {
   public static void main(String[] args) {
       MyRunnable myRunnable = new MyRunnable();
       Thread thread = new Thread(myRunnable, "Thread-1");
       thread.start();
   }
}
登入後複製

輸出

In run() method
登入後複製

#wait(long)

#在下面的程式中,當物件呼叫 wait(1000)時,執行緒從執行狀態進入等待狀態,即使在逾時時間過後沒有呼叫notify() notifyAll()執行緒也會從等待狀態進入可運作狀態。

範例

class MyRunnable implements Runnable {
   public void run() {
      synchronized(this) {
         System.out.println("In run() method");
         try {
<strong>            this.wait(1000); 
</strong>            System.out.println("Thread in waiting state, waiting for some other threads on same object to call notify() or notifyAll()");
         } catch (InterruptedException ie) {
            ie.printStackTrace();
         }
      }
   }
}
public class WaitMethodWithParameterTest {
   public static void main(String[] args) {
      MyRunnable myRunnable = new MyRunnable();
      Thread thread = new Thread(myRunnable, "Thread-1");
      thread.start();
   }
}
登入後複製

輸出

In run() method
Thread in waiting state, waiting for some other threads on same object to call notify() or notifyAll()
登入後複製

以上是在Java中,我們什麼時候可以呼叫Thread的wait()和wait(long)方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板