一、什麼是生產者與消費者模式
其實生產者與消費者模式就是一個多線程並發協作的模式,在這個模式中呢,一部分線程被用於去生產數據,另一部分線程去處理數據,於是便有瞭形象的生產者與消費者瞭。而為瞭更好的優化生產者與消費者的關系,便設立一個緩沖區,也就相當於一個數據倉庫,當生產者生產數據時鎖住倉庫,不讓消費者訪問,當消費者消費時鎖住倉庫,不讓生產者訪問倉庫。舉一個簡單的例子,有一個生產者生產包子,他將生產好的包子放到筐中,放完包子由消費者從筐中拿出包子使用。當然筐還有一個作用就是當筐中沒有包子時便鎖住筐,不讓消費者去筐中再拿取東西,當筐中有包子時,不讓生產者再向筐中放入包子。
二、實現生產者與消費者模式
一個簡單的方法就是使用使用Object的wait/notify的消息通知機制
- wait():調用瞭wait()方法的線程進入等待池進行等待,等待池中的線程不去競爭對象鎖,直到其它的線程通知,才會進入鎖池
- notify():隨機喚醒一個在該對象上等待的線程,被喚醒的線程進行鎖池,開始競爭該對鎖上的鎖
- notifyAll():喚醒所有在該對象上等待的線程,優先級高的線程有可能先競爭到,對象鎖隻能在同步方法和同步代碼塊中使用。
簡單的例子:
//創建饅頭對象
class ManTou{
int id;
//創建構造方法
public ManTou(int id) {
super();
this.id = id;
}
}
-
扫码下载安卓APP
-
微信扫一扫关注我们微信扫一扫打开小程序手Q扫一扫打开小程序
-
返回顶部
Copyright © TaoHigo.com |
2020-2021 |
|
queries in 0.452 s