等待喚醒機制

1、wait()

    讓線程處於凍結狀態,釋放執行權,釋放執行資格。被wait的線程會被存儲到線程池中。

2、notify()

    喚醒線程池中的任意一個線程。

3、notifyAll()

    喚醒線程池中的所有線程。

  • 上述這些方法都需要定義在同步中,且要明確是哪個鎖上的線程。

假設當前鎖爲lock,則上述方法的調用形式是lock.wait(),lock.notify(),lock.notifyAll().

  • wait和sleep的區別:

    1、wait可以指定時間,也可以不指定。sleep必須指定時間。

    2、在同步中,對cpu執行權和鎖的處理不同:

        wait:釋放執行權,釋放鎖,被喚醒後纔可以重新獲取執行權。

        sleep:釋放執行權,不釋放鎖。過了設置的時間後,會自己醒來,重新獲得執行權。

發佈了49 篇原創文章 · 獲贊 19 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章