1,多個執行緒通訊的問題
public class demo2_notifyall catch (interruptedexception e) }}
}.start();
new thread() catch (interruptedexception e) }}
}.start();
new thread() catch (interruptedexception e) }}
}.start();
}}/*1,在同步**塊中,用哪個物件鎖,就用哪個物件呼叫wait方法
* 2,為什麼wait方法和notify方法定義在object這類中?
* 因為鎖物件可以是任意物件,object是所有的類的基類,所以wait方法和notify方法需要定義在object這個類中
* 3,sleep方法和wait方法的區別?
* a,sleep方法必須傳入引數,引數就是時間,時間到了自動醒來
* wait方法可以傳入引數也可以不傳入引數,傳入引數就是在引數的時間結束後等待,不傳入引數就是直接等待
* b,sleep方法在同步函式或同步**塊中,不釋放鎖,睡著了也抱著鎖睡
* wait方法在同步函式或者同步**塊中,釋放鎖
*/class printer2
system.out.print("我");
system.out.print("是");
system.out.print("小");
system.out.print("帥");
system.out.print("啊");
system.out.print("\r\n");
flag = 2;
//隨機喚醒單個等待的執行緒
this.notifyall();}}
public void print2() throws interruptedexception
system.out.print("你");
system.out.print("開");
system.out.print("心");
system.out.print("嗎");
system.out.print("\r\n");
flag = 3;
this.notifyall();}}
public void print3() throws interruptedexception
system.out.print("a");
system.out.print("b");
system.out.print("c");
system.out.print("d");
system.out.print("e");
system.out.print("f");
system.out.print("g");
system.out.print("\r\n");
flag = 1;
this.notifyall();}}
}
2,注意事項:
在同步**塊中,用哪個物件鎖,就用那個物件呼叫wait方法。
為什麼wait放方法和notify方法定義在object類中。
sleep方法和wait方法的區別?
sleep方法在同步函式或同步**塊中,不釋放鎖
Java多執行緒 52 三個和三個以上執行緒之間的通訊
前面一篇介紹了兩個執行緒之間的通訊,那麼三個執行緒和三個以上執行緒之間的通訊是如何實現呢。我們前面一篇在查詢object類的時候,知道有乙個wait 和notify 方法,同時還有乙個notifyall 方法。這個notfiyall 方法就是來解決三個以上執行緒通訊的。1.基於前面知識,新增乙個執行...
三個執行緒,依次列印
程式設計實現三個執行緒abc,並讓它們順次列印abc 思路 設定三個訊號量 s1,s2,s3,s2由s1 post,s3由s2 post,s1由s3 post,由a執行緒先開始列印,其他執行緒必然在等待訊號量,所以三個執行緒一定會按照訊號量的順序來列印。注意vs 2015中多執行緒使用要呼叫wind...
python實現三個或三個以上列表之間元素相互組合
先說需求 需求主要就是 如下可見 不同的條件對應不同的值,我需要做的就是將所有的條件用python進行組合。將所有看作是乙個字典,每乙個key對應乙個情況1,情況1中還有不同的條件,例如審核狀態為情況1,審核狀態中還存在這已審核,未審核等。如下 from itertools import combi...