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 消費者函...