Java PriorityBlockingQueue FIFOEntry序列号限制

时间:2015-10-14 12:44:35

标签: java collections

根据Javadocs,PriorityBlockingQueue不保证具有相同优先级的元素的排序。他们建议使用辅助密钥(sequenceNumber)来强制执行特定的排序(例如FIFO)。

AtomicLong在此页面的给定FIFOEntry示例中用作辅助键。但是,此代码不考虑此辅助密钥的限制。似乎如果我们继续调用getAndIncrement(),当超出限制时,FIFO行为就会被破坏。

在不阻止应用流程的情况下,我们可以做些什么来防止这种溢出?例如,停止队列处理并更新所有序列号并将seqNum重置为0?

1 个答案:

答案 0 :(得分:2)

你知道64位数是多大吗?在用完长期值之前,你将早已死亡。

9,223,372,036,854,775,807是签名长期的最大值,如果您想象每秒使用一百万个数字,那么您将拥有大约292471年的足够数字。