執行緒間通訊 等待喚醒機制及買賣包子案例

2022-05-05 11:12:12 字數 1119 閱讀 8197

執行緒間通訊——等待喚醒機制,避免爭奪同一資源;

鎖物件可以是任意object類的子類物件;

包子案例:

包子案例——生產者和消費者:

關鍵就是在於兩個執行緒使用同乙個鎖物件! 這邊是主程式呼叫這兩個執行緒時候傳入的同乙個物件!

其中,baozi類作為成員變數,並且過載了帶參的構造方法;

鎖物件為呼叫包子鋪帶參的構造方法傳入的這個包子變數bz;

呼叫點wait方法必須是鎖物件呼叫,鎖物件呼叫wait方法之後當前執行緒就進入等待狀態,另外乙個執行緒此時應該是正在執行;

鎖物件呼叫notify方法之後,喚醒另外乙個執行緒,自己則進入等待狀態;

模2則有兩種情況;

前面和另外乙個執行緒生產者一樣,需要包子類作為成員變數,傳入有參構造方法;

關鍵在於生產者和消費者兩個的鎖物件是同個物件;使用的同步**塊方式實現執行緒同步;

其中,建立了包子物件之後,開啟包子鋪生產者和吃貨消費者這兩個執行緒,使用的匿名物件,呼叫有參構造方法,入參都是建立的包子物件;

執行結果:

兩種包子一直在生產和被消費;

執行緒間通訊 等待喚醒機制

執行緒間通訊 其實就是多個執行緒在操作同乙個資源,但是操作的動作不同 class res2 class input2 implements runnable public void run catch interruptedexception e if x 0 else x x 1 2 r.flag...

執行緒間的通訊 等待喚醒機制

執行緒間的通訊 同步執行緒必須滿足兩個條件 一 兩個或兩個以上的執行緒 二 都使用同乙個鎖物件 題目描述 首先有乙個資源池 resource 輸入執行緒 input 不斷往資源池內新增內容,輸出執行緒 output 不斷往外輸出內容 並且兩個執行緒需要同步。需要的結果是,輸入執行緒輸入乙個內容,然後...

java執行緒間通訊 等待喚醒機制

等待喚醒機制 涉及方法 1 wait 讓執行緒處於凍結狀態,被wait的執行緒會儲存到執行緒池中 2 notify 喚醒執行緒池中任一線程 隨機 3 nitifyall 喚醒執行緒池中所有執行緒 這些方法必須定義在同步中,因為這些方法是用於操作執行緒狀態的方法,必須要明確操作的是哪個鎖上的執行緒 這...