synchronized和lock的区别

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