Lock 锁的理解

不同于 synchronize关键字 ,从 1.5开始 lock是jdk提供给我们的api

Lock 锁:

lock 和 synchronize的区别:

  1. 前者通过开发者调用代码手工获取,后者通过jvm自动获取
  2. 前者务必通过unlock在finally中手工释放,后者jvm自动释放
  3. 前者通过java代码实现,后者jvm底层实现
  4. 前者提供了多种 ,入公平锁,非公平锁。前后两者都提供了可重入锁
Condition:

传统上我们实现对于线程的调度和控制,是基于 wait和notify实现。

lock 给我们提供了 await 和 singalAll来实现线程调度,这种方式更加灵活,可控

对于传统的synchronize来说,所有的等待都是在同一个集合中的,而Condition则可以拥有多个 。