Lock和sycnoized性能对比

现在测试不同线程下的表现(时间单位ms):

1105010050010005000
synchronized542489446674700515151565178
lock838121182184785112111241

可以看到,在多线程环境并存在大量竞争的情况下,synchronized的用时迅速上升,而lock却依然保存不变或增加很少。

Lock是用CAS来实现的
JDK 1.6以上synchronized也改用CAS来实现了,所以两者性能差不多
Lock提供的功能丰富点,synchronized的使用简单点

1、特色:reentainLock 可以维持公平性、响应中断、超时机制

2、性能:并发不严重sync更优,高并发reentainLock好。

3、底层实现:sync和lock 有同步队列、也有等待队列,sync是基于 object 的wait/notify,lock 是基于condition的await/sigal,底层是locksupport.park/unpark。

4、synchronized 和 lock 在高并发下 ,lock 更优秀。 原因在哪里?

       1)行为划分

       2)代码实现细节上的调优

       3) 资源粒度的划分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值