2014-04-13 130 views
1

即时寻找一个队列,不允许重复的元素(旧的重复元素总是被删除,并在队列的末尾是一个新的元素添加一个新的元素)。并且是线程安全的。一个线程正在向队列添加元素,另一个线程正在读取和删除元素。 在标准java库或者在guava/apache中有用吗?Java队列和线程安全

+0

你说的是JMS队列? –

+0

“不允许重复的元素”< - 根据什么标准? equals和hashCode? – fge

回答

2

您可以使用,例如,番石榴的Forwarding{,Blocking}{Queue,Deque}

然后你会做什么也有一个HashSet作为你的实施的一部分,你会尝试和.add()新元素;如果.add()返回false,则不要添加到委托。

而且,当你从队列中删除元素时,不要忘记从集合中删除.remove()

(这个假设,通过“复制”在这里,你的意思是“是.equals()”;如果在另一方面,你使用PriorityQueue你想使用TreeSet代替)