我想知道在哪种情况下ConcurrentLinkedQueue无法从其集合中删除元素。该项目存在,它在集合内但调用
SomeConcurrentLinkedQueue.remove(item)
不会从集合中删除此项目。集合是锁定还是什么?
答案 0 :(得分:6)
如果ConcurrentLinkedQueue.remove(item)
返回false
,则表示item
与队列的任何条目都不相等。如果这不是您所期望的,请检查item
的{{1}}方法是否有错误。
另一种可能性(由@Louis Wasserman指出)是队列包含多个出现的equals()
。 ConcurrentLinkedQueue.remove(item)
只会移除其中一个。