JAVA集合系列——CopyOnWriteArraySet实现原理
CopyOnWriteArraySet实现原理
特点
- COW机制实现
- 无序的
- 线程安全
- 唯一性
- 读写分离
数据结构
CopyOnWriteArraySet继承于AbstractSet,由于它是线程安全的,我们一般认为它是HashSet的线程安全实现,但是它和HashSet有本质的区别,HashSet是通过散列表实现的,而CopyOnWriteArraySet是通过动态数组实现,内部元素由CopyOnWriteArrayList负责维护,CopyOnWriteArraySet的元素的唯一性,是通过CopyOnWriteArrayList的addIfAbsent和addAllAbsent实现的。它和CopyOnWriteArrayList一样,使用用于读大于写的场景中。1
2
3
4
5public class CopyOnWriteArraySet<E> extends AbstractSet<E> implements java.io.Serializable {
//使用CopyOnWriteArrayList来保存元素
private final CopyOnWriteArrayList<E> al;
...
}
源码实现
1 | //获取size |
相关
CopyOnWriteArraySet都是使用CopyOnWriteArrayList来实现的,所以很有必要对CopyOnWriteArrayList实现加强了解,请阅读CopyOnWriteArrayList实现原理