併發程式設計(6)執行緒間通訊

2021-08-21 07:25:24 字數 782 閱讀 3490

1.基本概念

wait:將同步執行緒處於凍結狀態,釋放執行權,同時將執行緒物件儲存到執行緒池

notify:喚醒執行緒池中某個等待執行緒

notifyall:喚醒執行緒池中所有執行緒

2.注意

(1)這些方法都需要定義在同步中

(2)這些方法必須要標示所屬的鎖

(3)為什麼這三個方法要被定義在object中?因為這三個方法都需要被同步鎖呼叫,而鎖可以是任意物件,那麼能被任意物件呼叫的方法一定在object類中

3.wait和sleep的區別?

(1)wait可以指定時間,也可以不指定時間,不指定時間只能由notify或notifyall喚醒,sleep必須指定時間

(2)wait執行緒會釋放執行權和鎖,sleep只會釋放執行權,不會釋放鎖

public class demo3 

public int get()

public static void main(string args) catch (interruptedexception e)

d.set(1);

d.notify();}}

}).start();

new thread(new runnable() catch (interruptedexception e)

}system.out.println("模擬**執行...");}}

}).start();

}}

b.join(1000):執行緒a等待執行緒b執行一秒後繼續進入可執行狀態

javaSE 併發程式設計(執行緒間通訊)

新建乙個資源類resource 定義成員變數string name 定義成員變數int age 新建乙個輸入類input 實現runnable介面 定義乙個構造方法input 傳入引數 resource物件 實現run 方法 定義while true 往resuorce 物件的屬性賦值 新建乙個輸出...

三 併發程式設計之多執行緒間通訊

1 wait notify方法 1.1 wait notify必須在synchronized中進行使用 public class respublic class inthread extends thread override public void run catch interruptedexc...

Java併發程式設計 執行緒通訊

1.wait和notify方法 配合synchronize使用,屬於object方法 private volatile static list list new arraylist public void add public int size public static void main str...