【多线程】synchronized和lock的区别

目录

        • 一、区别

一、区别

  • 1.synchronized是Java关键字,在JVM层面实现加锁和解锁;Lock是一个接口,在代码层面实现加锁和解锁
  • 2.synchronized可以用在代码块上、方法上;Lock只能写在代码里
  • 3.synchronized在代码执行完或出现异常时自动释放锁;Lock不会自动释放锁,需要在finally中显示释放锁
  • 4.synchronized会导致线程拿不到锁一直等待;Lock可以设置获取锁失败的超时时间
  • 5.synchronized无法得知是否获取锁成功;Lock则可以通过tryLock得知加锁是否成功
  • 6.synchronized锁可重入、不可中断、不是公平锁;Lock锁可重入、可中断、可公平/不公平,并可以细分读写锁以提高效率

你可能感兴趣的:(多线程,面试,多线程)