1
根據Javadocs,PriorityBlockingQueue不保證具有相同優先級的元素的排序。他們建議使用輔助鍵(sequenceNumber)來強制執行特定的順序(例如FIFO)。Java PriorityBlockingQueue FIFOEntry序列號限制
AtomicLong
在本頁給出的FIFOEntry示例中用作輔助鍵。但是,此代碼不考慮此次要密鑰的限制。看起來,如果我們繼續呼叫getAndIncrement()
,當長限超過時,FIFO行爲已損壞。
我們可以在不阻止應用程序流的情況下對付這樣的溢出嗎?例如,在隊列上停止處理並更新所有序列號並將seqNum重置爲0?