多執行緒中的生產者和消費者我們經常會使用到,而嫁接生產者和消費者之前的橋梁可以是佇列也可以是棧,我們今天就使用迴圈佇列來手寫乙個同步迴圈佇列demo
迴圈佇列特點:fifo(先進先出)
同步迴圈佇列:
/**
* 同步佇列
**/public class synchronizedqueue
public synchronizedqueue(int size)
public synchronized boolean offer(t object)
if (insert == remove)
return true;
}public synchronized t poll()
t result = (t) queue[remove];
queue[remove] = null;
remove++;
// 當remove指標到達size時,需要重置到初始值0,以便重新移除queue物件
if (remove == size)
return result;
}public synchronized int size()
return result;
}public synchronized void clear()
insert = 0;
remove = 0;
}private void expand()
}
生產者和消費者測試類:
/**
* 佇列測試類
**/public class queuetest catch (interruptedexception e)
}if (index >= 10)
}}).start();
// 消費者
new thread(() ->
}}).start();}}
執行結果:
c 佇列Queue學習示例分享
佇列queue 建立佇列 system.collections.queue類提供了四種過載建構函式。複製 如下 using system.collections.generic using system.linq using system.text using system.collections ...
同步佇列 Queue模組解析
queue模組解決了生產者 消費者問題,在多執行緒程式設計中進行執行緒通訊的時候尤其有用,queue類封裝了加鎖解鎖的過程。在queue模組中有三種不同的佇列類,區別是不同佇列取出資料的順序不同。在fifo佇列中,先存進去的資料最先取出來。而在lifo佇列中,最後存進去的資料最取出來。在加權佇列中,...
迴圈佇列Queue 使用順序儲存結構(陣列)實現
本人之前總是看,但是上手寫 少。就是那種眼高手低的 汗 這段時間有空,就來補補吧,從基礎開始.希望能夠堅持下去。資料成員 頭索引 front 尾索引 rear 判斷條件 判斷佇列 空 front rear 判斷佇列 滿 rear 1 max size front,頭和尾之間,保留乙個元素空間 計算佇...