生產者消費者模式

2022-08-21 22:36:11 字數 884 閱讀 4614

public class storage

catch (interruptedexception e)

}//有兩個put執行緒等待,如果不用while用if的話,消費者裡喚醒後第二個put執行緒先拿到鎖,他會先新增乙個,新增完後把鎖給第乙個執行緒,第乙個執行緒已經執行到if結束了,就會再新增乙個,就會出現問題

// 生產產品           

list.add(new object());           

system.out.println("【"+producer+"】:生產了乙個產品\t【現倉儲量為】:" + list.size());

this.notifyall();//通知消費者執行緒進行消費,所以要用notifyall,如果用notify可能又會喚醒乙個生產者  鎖的是類物件,用this

}// 消費產品

public void consume(string consumer)

catch (interruptedexception e)

}list.remove();

system.out.println("【"+consumer+"】:消費了乙個產品\t【現倉儲量為】:" + list.size());

list.notifyall();//通知生產者進行生產,  鎖的是list 用list}}

}public class test

}).start();

}for(int i=1;i<4;i++)}}

/*  多個生產者消費者執行緒版本

public static void main(string args)

}).start();

}for(int i=1;i<20;i++)

}).start();

}}*/

生產者消費者 生產者與消費者模式

一 什麼是生產者與消費者模式 其實生產者與消費者模式就是乙個多執行緒併發協作的模式,在這個模式中呢,一部分執行緒被用於去生產資料,另一部分執行緒去處理資料,於是便有了形象的生產者與消費者了。而為了更好的優化生產者與消費者的關係,便設立乙個緩衝區,也就相當於乙個資料倉儲,當生產者生產資料時鎖住倉庫,不...

生產者 消費者模式

一 我哥們把資料存入redis快取區 生產者 二 我從緩衝器取資料,並作處理!消費者 詳細 如下 取訂單並判斷 redis new redis conn flag redis connect redis translate usefull host,redis translate usefull p...

生產者消費者模式

常見場景 某個模組負責產生資料,這些資料由另乙個模組來負責處理。產生資料的模組,就形象地稱為生產者 而處理資料的模組,就稱為消費者。該模式還需要有乙個緩衝區處於生產者和消費者之間,作為乙個中介。生產者把資料放入緩衝區,而消費者從緩衝區取出資料 緩衝區作用 1.解耦,生產者和消費者只依賴緩衝區,而不互...