线程安全的无序set

2022-07-25  本文已影响0人  M_lear

有如下4种选择:

  1. Collections.synchronizedSet(new HashSet<>())
  2. new CopyOnWriteArraySet<>()
  3. Collections.newSetFromMap(new ConcurrentHashMap<>())
  4. ConcurrentHashMap.newKeySet()

Collections.synchronizedSet(new HashSet<>())
since 1.2
锁粒度大,不推荐使用。

new CopyOnWriteArraySet<>()
since 1.5
基于CopyOnWriteArrayList实现,适合遍历操作远多于写操作的场景。

Collections.newSetFromMap(new ConcurrentHashMap<>())
since 1.6
通过传入线程安全的map构建线程安全的set。

ConcurrentHashMap.newKeySet()
since 1.8
基于ConcurrentHashMap构建的线程安全的set。
一般情况下,推荐这种方式。
和上一种方式相比,优势可以参考:ConcurrentHashMap.newKeySet() vs Collections.newSetFromMap()

上一篇 下一篇

猜你喜欢

热点阅读