執行緒通訊:
不同的執行緒執行不同的任務,如果這些任務有某種關係,執行緒之間必須能夠通訊,協調完成工作。
我們來看乙個案例:生產者和消費者案例(producer/consumer)
生產者和消費者應該操作共享的資源(實現方式來做);
使用乙個或多個執行緒來表示生產者producer;
使用乙個或多個執行緒來表示消費者consumer。
生產者和消費者案例示意圖
為什麼生產者不直接把肉包子給消費者,而是先把資料儲存到共享資源中,消費者再從共享資源中取出肉包子,再消費呢?
其實這裡主要體現了物件導向的設計理念,我們先看一下耦合的兩種類別:
高(緊)耦合:直接使用生產者把肉包子給消費者,那麼生產者中得存在消費者的引用,同理,消費者要消費生產者生產的肉包子,那麼消費者中也得存在生產者物件的引用。
低(松)耦合:使用乙個中間物件,遮蔽了生產者和消費者直接的資料互動。
兩種耦合方式的**
如果,共享資源中沒有肉包子,則生產者負責生產乙個肉包子,否則生產者等待消費者消費完肉包子;共享資源中沒有肉包子,則消費者等待生產者生產肉包子。
java執行緒通訊
題目 子執行緒迴圈10次,接著主線程迴圈100,接著又回到子執行緒迴圈10次,接著再回到主線程又迴圈100,如此迴圈50次。public class traditionalthreadcommunicationtest start for int i 1 i 50 i static class bu...
Java 執行緒通訊
sychronized關鍵字 對方法使用該關鍵字,可以保證每次只有乙個執行緒獲取monitor的許可權,從而確保執行緒對共享資源操作的不會出現異常 wait wait 方法屬於object,有三個過載方法,該方法必須在sychronized方法或同步 塊中呼叫,呼叫該方法的執行緒會進入wait 對應...
Java執行緒通訊
假設現在系統中有兩個執行緒,分別代表取錢和存錢,現在假設系統有一種特殊的要求,系統要求存款者和取款者不斷重複訪問款,而且要求每當存款者將錢存入指定賬戶時,取錢者就立即取出該筆錢,不允許連續存款兩次,也不允許連續取款兩次 public class threadconnection class acco...