《生產者與消費者》簡單例子?

2021-06-28 07:08:24 字數 1103 閱讀 4028

package communication;
//執行結果不太能理解,-1 ????

/*開始消費者呼叫消費方法時處於等待狀態,此時喚起生產者執行緒

* 生產者開始生產共享資料之後,消費者進行消費,但是當共享資料為空,所有消費者必須等待,生產者繼續生產,然後消費者再次消費

* 如此迴圈直到程式執行最後,可以看到執行緒一直等待。

* 這個執行緒進入等待後沒有其他執行緒喚醒,出除非強行退出jvm環境,否則一直等待..*/

public class threadcommunication

}//生產者執行緒

class producer extends thread

public void run() }}

// 消費者執行緒

class consumer extends thread

public void run() }}

class queue catch (interruptedexception e)

} //隊列為空時,生產者生產,value+1;isempty置為false

system.out.println("\n生產者生產:");

value+=v;//value值加v

isempty = false;

system.out.println("生產者共生產數量:"+v);

notify();//生產者生產之後通知消費者消費

} //消費者消費方法

public synchronized int get() catch (interruptedexception e)

} //佇列不空時,消費:value-1;減到0,將isempty置為true通知生產者生產。

system.out.println("\n消費者消費:");

value--;//value值減v

if(value<1)

system.out.println("消費者消費乙個,剩餘:"+value);

notifyall();//消費者消費後,通知生產者生產

return value; }}

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

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

生產者與消費者

include include include include include include define size of buffer 10 int buffer size of buffer 緩衝陣列 int in 0,out 0 採用迴圈佇列方式進行陣列的訪問 宣告訊號量 sem t ful...

生產者與消費者

include include include include include include handle mutex 互斥訊號量 handle full 滿緩衝區訊號量計數 handle empty 空緩衝區訊號量計數 void producer 生產者函式 void consumer 消費者函...