同步迴圈佇列Queue示例demo

2021-09-25 08:02:11 字數 1095 閱讀 7454

多執行緒中的生產者和消費者我們經常會使用到,而嫁接生產者和消費者之前的橋梁可以是佇列也可以是棧,我們今天就使用迴圈佇列來手寫乙個同步迴圈佇列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,頭和尾之間,保留乙個元素空間 計算佇...