溫馨提示×

java wait與notify區別

小樊
133
2024-11-17 00:52:56
欄目: 編程語言

wait()notify() 是 Java 中兩個重要的方法,它們主要用于多線程編程中的線程間通信。這兩個方法都定義在 Object 類中,因此所有的 Java 對象都可以使用它們。它們的主要區別在于它們的作用和用法。

  1. wait():

    • 當一個線程調用某個對象的 wait() 方法時,該線程會釋放該對象的所有鎖,然后進入等待狀態,直到其他線程調用同一個對象的 notify()notifyAll() 方法喚醒它。
    • wait() 方法通常與 synchronized 關鍵字一起使用,以確保線程安全。
    • wait() 方法會拋出 InterruptedException 異常,因此調用者需要處理這個異常。
    • wait() 方法只能被調用一次,否則會拋出 IllegalMonitorStateException 異常。
  2. notify():

    • 當一個線程調用某個對象的 notify() 方法時,它會喚醒在該對象上等待的單個線程。具體喚醒哪個線程是不確定的,取決于操作系統的線程調度策略。
    • notify() 方法通常與 synchronized 關鍵字一起使用,以確保線程安全。
    • notify() 方法不會拋出異常。
    • 如果調用 notify() 方法時沒有線程在等待,那么沒有任何效果。

總結一下,wait()notify() 都是用于線程間通信的方法,它們的主要區別在于:

  • wait() 方法使當前線程等待,并釋放對象鎖;而 notify() 方法喚醒等待在當前對象上的一個線程。
  • wait() 方法會拋出 InterruptedException 異常;而 notify() 方法不會拋出異常。
  • wait() 方法只能被調用一次;而 notify() 方法可以多次調用。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女