生產者 消費者模型的java實現

2021-07-05 03:44:50 字數 1192 閱讀 6044

生產者-消費者(producer-consumer)問題,也稱作有界緩衝區(bounded-buffer)問題,兩個程序共享乙個公共的固定大小的緩衝區。其中乙個是生產者,用於將訊息放入緩衝區;另外乙個是消費者,用於從緩衝區中取出訊息。問題出現在當緩衝區已經滿了,而此時生產者還想向其中放入乙個新的資料項的情形,其解決方法是讓生產者此時進行休眠,等待消費者從緩衝區中取走了乙個或者多個資料後再去喚醒它。同樣地,當緩衝區已經空了,而消費者還想去取訊息,此時也可以讓消費者進行休眠,等待生產者放入乙個或者多個資料時再喚醒它。

public class buffer 

public void add(string name,string s) catch (interruptedexception e)

bufflist.add(s);

system.out.println(name+"生產了一塊麵包!剩餘"+bufflist.size()+"個");

notifyall();

} }public synchronized void delete(string name) catch (interruptedexception e)

bufflist.remove(0);

system.out.println(name+"買走了一塊麵包!剩餘"+bufflist.size()+"個");

notifyall();

} }}

public class producer implements runnable

@override

public void run() catch (interruptedexception e)

buffer.add(name,"bread");

} }}

public class consumer implements runnable

@override

public void run() catch (interruptedexception e)

buffer.delete(name);

} }}

public class producer_consumer 

}}

若有改進之處,望高手指正

Java 生產者 消費者模型

生產者消費者問題是執行緒模型中的經典問題 生產者和消費者在同一時間段內共用同一儲存空間,生產者向空間裡生成資料,而消費者取走資料。此處實現如下情況的生產 消費模型 生產者不斷交替地生產兩組資料 姓名 1 內容 1 姓名 2 內容 2 消費者不斷交替地獲取這兩組資料,這裡的 姓名 1 和 姓名 2 模...

Java 生產者消費者模型

1.基於synchronzied底層,與wait notifyall實現 object類提供的wait notify方法,配合synchronized使用,操作更底層,可擴充套件性和可控制性小。先來介紹一下wait notify notifyall 方法 wait object類的方法,只能在同步方...

簡單生產者消費者模型 java實現

created by butter on 16 11 16.生產者與消費者模型中,要保證以下幾點 1 同一時間內只能有乙個生產者生產 生產方法加鎖sychronized 2 同一時間內只能有乙個消費者消費 消費方法加鎖sychronized 3 共享空間空時消費者不能繼續消費 消費前迴圈判斷是否為空...