synchronized和lock的区别

  • synchronized是Java内置的一个关键字,Lock是是一个Java接口。
  • synchronized无法判断获取锁的状态,而lock锁可以判断是否获取到了锁。
  • synchronized会自动释放锁,而lock必须手动释放锁。如果不释放就会变成死锁。
  • synchronized 可重入锁,不可以中断的,非公平。lock锁 可重入锁,可以判断锁,公平不公平自己可以设置。
  • synchronized经历多次优化,偏向、适应性自旋、轻量、重量。lock通过cas避免加锁,再通过UNSAFE.park(false, 0L);进行挂起,UNSAFE.unpark(thread)唤醒。底层都是通过mutex互斥量实现。
posted on 2023-03-30 00:41  zhengbiyu  阅读(18)  评论(0编辑  收藏  举报