List集合
arrayList不是线程安全的,对应的线程安全的集合有:
1、SynchronizedList
所有方法都加上同步锁,性能不好
2、CopyOnWriteArrayList
并发包下,java1.5开始加入的。复制并写入,及在添加元素的时候,先把原来的数组复制一份,再进行添加。添加时先加可重入锁,添加完后再手动释放锁。读取元素时不加锁,写入元素时才加锁,大大提高性能。
CopyOnWriteArraySet逻辑就更简单了,就是使用 CopyOnWriteArrayList 的 addIfAbsent 方法来去重的,添加元素的时候判断对象是否已经存在,不存在才添加进集合。