是否存在允许组合条目的java.util.concurrent.BlockingQueue的高效(没有同步所有)实现?
通过组合我的意思是将传入的项目与队列中现有的“相等”条目合并(如果有的话),否则像往常一样在最后添加项目。
答案 0 :(得分:2)
检查此答案:Concurrent Set Queue。如果你所说的所有合并都忽略了与已经在队列中的东西相等的元素,那么它可能与你的问题重复。
答案 1 :(得分:1)
BlockingQueue
使用contains
方法。随意使用它,但不要忘记同步。 contains
是O(n)f.x.在LinkedBlockingDeque
中,您可以尝试使用HashSet
更有效的方法。
答案 2 :(得分:0)
如果时间戳和源是其两个属性,我看不到组合事件。除非同一个用户在一纳秒或更短的时间内发送了两个事件,否则我认为它们不能被认为是平等的,不应该被合并。