JAVA基礎(多執行緒三個或三個以上間的執行緒通訊)

2021-09-25 04:59:28 字數 1674 閱讀 1691

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...