CopyOnWriteArrayList 比 Vector厉害在哪?

CopyOnWriteArrayList 比 Vector厉害在哪?

为什么经常使用的是CopyOnWriteArrayList

CopyOnWriteArrayList 使用的lock锁的机制

在这里插入图片描述

Vector 使用的是synchronized锁

在这里插入图片描述

synchronized 和 lock锁的区别

  1. synchronized 是java内置的关键字,lock是一个java类

  2. synchronized 无法获取锁的状态,lock 可以判断是否获得了锁

  3. synchronized 会自动释放锁,lock不会自动释放锁,需要自己手动释放锁,如果不释放锁,会造成死锁

  4. synchronized 线程一(获得锁,然后锁阻塞了),线程二(等待,然后还是傻傻的等待),lock锁就不一定会等待下去

  5. synchronized 可重入锁,不可以被中断,非公平,lock 可重入锁,可判断锁,是否为公平锁,可以自行设置

  6. synchronized 适合少量的代码同步问题,lock适合大量的代码同步问题

    Vector 和 CopyOnWriteArrayList

    Vector 的曾删改查方法都加上了synchronized锁,保证同步的情况下,因为每个方法都要去获得锁,所以性能就会大大下降。

    CopyOnWriteArrayList 方法只是在增删改方法上增加了ReentrantLock锁,但是他的读方法不加锁,所以在读的方面就要比Vector性能要好,CopyOnWriteArrayList适合读多写少的并发情况,读写分离,在写的时候复制出一个新的数组,完成插入、修改、删除操作,在完成操作后,将这个新的数组赋值给一个array。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值