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

2021-10-04 13:56:50 字數 1120 閱讀 3837

1、wait、notify方法

1.1、wait、notify必須在synchronized中進行使用

public class res
public class inthread extends thread 

@override

public void run() catch (interruptedexception e)

}if (count == 0) else

count = (count + 1) % 2;

res.flag = true;

res.notify();}}

}}

public class outthread extends thread 

@override

public void run() catch (interruptedexception e)

}system.out.println(res.username + " -- " + res.user***);

res.flag = false;

res.notify();}}

}}

public static void main(string args) }

2、wait、sleep的區別

2.1、sleep屬於thread的方法,wait屬於object的方法

2.2、sleep方法導致程式暫停執行時間,讓出cpu給其他執行緒,但是他的監控狀態依然保持著,當指定時間到了又會自動恢復執行狀態。

2.3、在呼叫sleep方法時,執行緒不會釋放物件鎖。而當呼叫wait方法時,執行緒會放棄物件鎖,進入等待此物件的等待鎖定池,只有針對次物件呼叫notify()方法後本執行緒才進入物件鎖定池準備獲取物件鎖進入執行狀態。

3、lock鎖

lock鎖與synchronized關鍵字類似的同步功能,但需要在使用時手動獲取鎖和釋放鎖。

lock lock = new reentrantlook();

lock.lock();

try finally {

//  一定在finally中釋放鎖

lock.unlock();

1 3併發程式設計之多執行緒通訊

多執行緒之間通訊,其實就是多個執行緒在操作同乙個資源,但是操作的動作不同。1.因為涉及到物件鎖,他們必須都放在synchronized中來使用.wait notify一定要在synchronized裡面進行使用。2.wait必須暫定當前正在執行的執行緒,並釋放資源鎖,讓其他執行緒可以有機會執行 3....

python併發程式設計之多執行緒

程序包含了執行該程式所需要所有資源 程序是乙個資源單位 執行緒是cpu的最小執行單位 每乙個程序一旦被建立 就預設開啟了一條執行緒 稱之為主線程 使用執行緒可以提高程式效率 為何不用多程序提高效率 是因為程序對作業系統的資源耗費非常高 執行緒共享建立它的程序的位址空間 程序有自己的位址空間。執行緒可...

併發程式設計專題之多執行緒之間實現通訊

多執行緒之間通訊,其實就是多個執行緒在操作同乙個資源,但是操作的動作不同。需求 第乙個執行緒寫入 input 使用者,另乙個執行緒取讀取 out 使用者.實現讀乙個,寫乙個操作。共享資源源實體類,兩個執行緒將會對類中變數進行讀和寫操作 class res寫執行緒資源 class intthrad e...