2014-04-13 219 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代替)