简述 synchronized 和 java.util.concurrent.locks.Lock 的异同

答:

  • 主要相同点:Lock 能完成 synchronized 所实现的所有功能;
  • 主要不同点:Lock 有比 synchronized 更精确的线程语义和更好的性能。
  • synchronized 会自动释放锁,而 Lock 一定要求程序员手工释放,并且必须在finally 从句中释放。