lock 与 synchronized的区别

  • lock 是一个接口,synchronized 是 Java 关键字;
  • synchronized退出/发生异常时自动释放锁,lock需要手动执行unlock;
  • synchronized不能处理线程中断Interrupt,lock可以处理;
  • lock 功能更加丰富:可以通过非堵塞的trylock()获取锁,也可以tryLock(long time, TimeUnit unit)指定等待时间;
  • lock 的实现比如读写锁可以提升读性能;
  • Lock+Condition 可以实现多个等待队列区分不同条件。

https://zhuanlan.zhihu.com/p/99870419