Synchronized和Lock的区别

  • Synchronized是内置的Java关键字,Lock是一个类
  • Synchronized无法判断获取锁的状态,Lock可以判断是否获取到了锁
  • Synchronized会自动释放锁,Lock必须要手动释放锁!如果不释放锁,会出现死锁的可能
  • Lock可以让等待锁的线程响应中断,而synchronized却不行,使用synchronized时,等待的线程会一直等待下去,不能够响应中断.
  • Synchronized 可重入锁,不可以中断的,非公平;Lock ,可重入锁,可以 判断锁,非公平(可以自己设置);
    *Synchronized 适合锁少量的代码同步问题,Lock 适合锁大量的同步代码!
原文地址:https://www.cnblogs.com/liuzhidao/p/14211914.html