任何有效的BlockingQueue实现,允许组合条目?

时间:2012-07-16 09:32:06

标签: java blockingqueue merging-data

是否存在允许组合条目的java.util.concurrent.BlockingQueue的高效(没有同步所有)实现?

通过组合我的意思是将传入的项目与队列中现有的“相等”条目合并(如果有的话),否则像往常一样在最后添加项目。

3 个答案:

答案 0 :(得分:2)

检查此答案:Concurrent Set Queue。如果你所说的所有合并都忽略了与已经在队列中的东西相等的元素,那么它可能与你的问题重复。

答案 1 :(得分:1)

BlockingQueue使用contains方法。随意使用它,但不要忘记同步。 contains是O(n)f.x.在LinkedBlockingDeque中,您可以尝试使用HashSet更有效的方法。

答案 2 :(得分:0)

如果时间戳和源是其两个属性,我看不到组合事件。除非同一个用户在一纳秒或更短的时间内发送了两个事件,否则我认为它们不能被认为是平等的,不应该被合并。