当前位置:   article > 正文

面试:lock 和 synchronized

面试:lock 和 synchronized

一、语法层面

  1. synchronized 是关键字,源码在jvm中,用c++语言实现
  2. Lock 是接口,源码由jdk提供,用java语言实现
  3. 使用synchronized时,退出同步代码块锁会自动释放,而使用Lock时,需要手动调用unlock方法释放锁

二、功能层面

  • 二者均属于悲观锁、都具备基本的互斥、同步、锁重入功能
  • Lock提供了许多synchronized 不具备的功能,例如获取等待状态、公平锁、可打断、可超时、多条件变量
  • Lock有适合不同场景的实现,如ReentrantLock,ReentrantReadWriteLock

三、性能层面

  • 在没有竞争时,synchronized做了很多优化,如偏向锁、轻量级锁,性能不赖
  • 在竞争激烈时,Lock的实现通常会提供更好的性能

lock锁像队列一样逐个获得锁

ReentrantLock有两种实现方式,一种是有参的构造,会根据你所设置的参数来决定是公平还是非公平锁。

另一种是无参构造,默认是非公平锁。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/458391
推荐阅读
相关标签
  

闽ICP备14008679号