案例: 子執行緒迴圈10次, 主線程迴圈5次, 兩者交替執行50次**
package thread;
public class traditionalthreadcommunication
}}).start();
for (int i = 1; i <= 50; i++) }}
class bussiness catch (interruptedexception e)
} for (int i = 1; i <= 10; i++)
// 將flag置為false 並喚醒主線程
flag = false;
this.notify();
} public synchronized void main(int j) catch (interruptedexception e)
} for (int i = 1; i <= 5; i++)
// 將flag置為true 並喚醒子執行緒
flag = true;
this.notify();
}}
將需要互斥的資源(屬性和方法) 統一定義在乙個類中, 而不是將互斥**寫到執行緒中, 這樣做的好處是以後任何執行緒再訪問資源類的時候就可以保證是執行緒安全的
注意: 使用notify()和notifyall()方法的時候是不會釋放鎖資源的
執行緒的互斥與同步通訊
當多個執行緒同時操作同乙個物件會出現執行緒安全問題 1.使用synchronized 塊及其原理 2.使用synchronized方法 3.分析靜態方法所使用的同步監視器物件是什麼?4.wait與notify實現執行緒間的通訊 用面試寶典中的子執行緒迴圈10次和主線程迴圈5次,兩種交替執行 50次的...
執行緒同步互斥通訊問題之互斥
執行緒同步互斥通訊問題之互斥 使用wait 和notify 實現執行緒之間的通訊。要用到同步鎖 同一資料或者同一演算法的方法都盡量放在同乙個類中 程式的健壯性 高類聚 package martina.traditionalthread public class traditionalthreadco...
多執行緒學習3 執行緒互斥與同步通訊
1.執行緒互斥 synchronized關鍵字 a.使用於 塊上 synchronized 監視器物件 code b.使用於例項方法上 監視器物件是this public synchronized void ff c.使用於靜態方法上 監視器物件是位元組碼檔案,即類名.class public st...