2015-03-25 72 views
0

HashSet <> IPs = new HashSet <>();Hashset多線程保持完整性?

我將有多個線程訪問和修改此。將添加揮發性單詞足以防止腐敗?關於如何防止衝突的線程訪問的基本解釋將幫助我更好地理解這些關鍵字,但我不太清楚。

+0

揮發性是不夠的使用同步技術,通過守衛哈希集和一次只允許一個線程訪問哈希集 – virendrao 2015-03-25 04:27:35

回答

0

volatile只會使變量本身線程安全。這意味着分配一個新值或讀取變量是線程安全的,而不是存儲在變量中的對象的方法調用。 Collections.synchronizedSet(Set set)可能需要您的需求。

HashSet<String> names = new HashSet<>(); 
Set<String> threadSafe = Collections.synchronizedSet(names); 
+0

你可以給我一個使用此synchronizedSet方法的例子我收到一個錯誤,我不能放置一個HashSet的,我相信這是我的一些愚蠢的語法錯誤。 – CodeCamper 2015-03-25 03:57:13

0

你應該看看java.util.concurrent包。併發集合相當於performant。特別是ConcurrentSkipListSetCopyOnWriteArraySet