4
在並行流的謂詞函數中有效使用最終的HashSet
是否安全?parallelStream中HashSet的線程安全性
如果不是,那麼使用什麼樣的好數據結構?我沒有看到ConcurrentSet
...我想我可以使用ConcurrentHashMap.entrySet()
。
從我所能收集的內容來看,即使HashSet沒有被修改,最新狀態可能在所有線程中都不可用。但也許有一個簡單的伎倆,使其可用?
List<Integer> items = Stream
.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
.collect(Collectors.toList());
Set<Integer> exclude = Stream
.of(5, 10, 15)
.collect(Collectors.toSet());
List<Integer> filtered = items
.parallelStream()
.filter(num -> !exclude.contains(num))
.collect(Collectors.toList());
是的,應該沒問題。 –
至於線程安全設置,您可以使用'ConcurrentHashMap.newKeySet()'。 –