java多線程wait方法

其實wait()方法就是使線程停止運行。

  1. 方法wait()的作用是使當前執行代碼的線程進行等待,wait()方法是Object類的方法,該方法是用來將當前線程
    置入“預執行隊列”中,並且在wait()所在的代碼處停止執行,直到接到通知或被中斷爲止。
  2. wait()方法只能在同步方法中或同步塊中調用。如果調用wait()時,沒有持有適當的鎖,會拋出異常。
  3. wait()方法執行後,當前線程釋放鎖,線程與其它線程競爭重新獲取鎖
    範例:觀察wait()方法使用
public static void main(String[] args) throws InterruptedException {
Object object = new Object();
synchronized (object) {
System.out.println("等待中...");
object.wait();
System.out.println("等待已過...");
}
System.out.println("main方法結束...");
}

這樣在執行到object.wait()之後就一直等待下去,那麼程序肯定不能一直這麼等待下去了。這個時候就需要使用到了
另外一個方法喚醒的方法notify()。

object.wait();
wait是 鎖的對象 進行wait
wait和sleep的比較:

  1. wait 之前需要請求鎖,而wait執行時會先釋放鎖,等被喚醒時再重新請求鎖。這個鎖是 wait 對像上的 monitor lock
  2. sleep 是無視鎖的存在的,即之前請求的鎖不會釋放,沒有鎖也不會請求。
  3. wait 是 Object 的方法
  4. sleep 是 Thread 的靜態方法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章