扫码关注微信公众号

回复“面试手册”,获取本站PDF版

回复“简历”,获取高质量简历模板

回复“加群”,加入程序员交流群

回复“电子书”,获取程序员类电子书

当前位置: Java > Java并发高频面试题 > 40.synchronized和Lock的区别?
  • Lock是显示锁,需要手动开启和关闭。synchronized是隐士锁,可以自动释放锁。
  • Lock是一个接口,是JDK实现的。synchronized是一个关键字,是依赖JVM实现的。
  • Lock是可中断锁,synchronized是不可中断锁,需要线程执行完才能释放锁。
  • 发生异常时,Lock不会主动释放占有的锁,必须通过unlock进行手动释放,因此可能引发死锁。synchronized在发生异常时会自动释放占有的锁,不会出现死锁的情况。
  • Lock可以判断锁的状态,synchronized不可以判断锁的状态。
  • Lock实现锁的类型是可重入锁、公平锁。synchronized实现锁的类型是可重入锁,非公平锁。
  • Lock适用于大量同步代码块的场景,synchronized适用于少量同步代码块的场景。

点击面试手册,获取本站面试手册PDF完整版