CopyOnWriteArraySet是线程安全的,它底层的实现使用了CopyOnWriteArrayList,因此和CopyOnWriteArrayList概念是类似的。使用迭代器进行遍历的速度很快,并且不会与其他线程发生冲突。在构造迭代器时,迭代器依赖于不可变的数组快照,所以迭代器不支持可变的 remove 操作。
CopyOnWriteArraySet适合于具有以下特征的场景:
set 大小通常保持很小,只读操作远多于可变操作,需要在遍历期间防止线程间的冲突。 CopyOnWriteArraySet缺点:
因为通常需要复制整个基础数组,所以可变操作(add、set 和 remove 等等)的开销很大