一:适用场景
1.读操作尽可能地快,而写即使慢一点也没有太大的关系
2.读多写少:黑名单,每日更新;监听器:迭代操作远多余修改操作
3.CopyOnWriteArrayList可以在迭代的过程中修改内容,但是ArrayList不行。
4.CopyOnWrite的含义:创建新副本,读写分离。
二:CopyOnWriteArrayList缺点
1.数据一致性问题:CopyOnWrite容器只能保证数据的最终一致性,不能保证数据的实时一致性。所以如果你希望写入的数据马上能读到,请不要使用CopyOnWrite容器
2.内存占用问题:因为CopyOnWrite的写是复制机制,所以在进行写操作的时候,内存里会同时驻扎两个对象的内存。
三:读写规则
1.读写锁:读读共享,其他都互斥(写写互斥,读写互斥,写读互斥)
2.读写锁规则的升级:读是完全不用加锁的,并且更厉害的是,写入也不会阻塞读取操作。只有写入和写入之间需要进行同步等待