关键字:Synchronized和lock

synchronized是Java的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。JDK1.5以后引入了自旋锁、锁粗化、轻量级锁,偏向锁来有优化关键字的性能。

Lock:JDK5新增了 Lock接口和实现类ReentrantLock(重入锁),利用lock()【阻塞式】,tryLock()【非阻塞式】,lockInterruptibly()【获得了锁就返回,否则线程就休眠,知道获得锁】。
使用lock前先:
Lock lock = new ReentrantLock();
再用lock进行加锁(lock.lock())和释放锁(lock.unlock() )。

区别:
1、Synchronized可以加在方法上,也可以加载代码块上,而Lock要显式的制定起始位置,即lock()和unlock()。Synchronized是托管给JVM的,Lock的锁定是通过代码实现的。
2、竞争不激烈时,Synchronized性能优于ReentrantLock,竞争激烈时,Synchronized性能差。
3、Synchronized会自动释放锁,而Lock需要在finally块中手动释放锁。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值