我遇到了一些阴暗的代码,其中HashSet
同时被多个线程访问和修改,我想知道它可能产生的影响,考虑到Javadoc只解释了行为在并发,非同步访问下是“非确定性的”。
具体来说,对remove(element)
的调用是否可能返回true
,但其他线程永远不会看到调用的影响(即。contains(element)
将始终返回{ {1}}在其他线程中)?
true
。
答案 0 :(得分:2)
在多个线程中访问HashSet可以。
注意:使用
进行简单的替换Set<Type> set = Collections.newSetFromMap(new ConcurrentHashMap<Type, Boolean>());