[英]Effects of concurrent accesses on a HashSet
我遇到了一些陰暗的代碼,其中HashSet
同時被幾個線程訪問和修改,我想知道它可能產生的影響,考慮到Javadoc只解釋了行為是“非確定性的”並發,非同步訪問。
具體來說,對remove(element)
的調用是否可能返回true
,但是其他線程永遠不會看到調用的效果(即contains(element)
將始終在其他線程中返回true
)?
PS:只是為了讓你放心,我知道這段代碼很糟糕,我會用等效的同步集合替換HashSet
。
在多個線程中訪問HashSet可以。
注意:使用簡單的替代品
Set<Type> set = Collections.newSetFromMap(new ConcurrentHashMap<Type, Boolean>());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.