mybatis|synchronized 和 Lock 有什么区别?

mybatis|synchronized 和 Lock 有什么区别?

  1. synchronized是Java内置的关键字 , 在jvm层面上起作用 , Lock是一个Java类
  2. synchronized无法判断是否获取了锁 , Lock可以判断是否获得锁
  3. synchronized会自动释放锁 , Lock必须手动释放锁 , 而且释放锁的代码必须写在finally代码块中
  4. synchronized修饰的代码块 , 由其中一个线程获得锁之后 , 这个线程会阻塞 , 等待的其他线程会一直等待下去 , Lock不一定会死等
  5. synchronized是可重入、不可中断、非公平锁;Lock是可重入锁 , 自己配置是否可中断 , 自己配置是否公平
  6. Java1.6之前synchronized性能低效 , Java在1.6之后对其性能进行一个优化 。 从此 , 两者的区别只在于一些功能性区别 。 其实 , 更加推荐使用synchronized , 因为升级Java版本会获得免费的性能提升
\uD83D\uDE4F如果内容对您有帮助 , 希望您能多多点赞收藏加关注 , 激励作者创作出更加优质内容 , 谢谢!\uD83D\uDE4F
【mybatis|synchronized 和 Lock 有什么区别?】