Lock的使用

  • Lock是一个Java类,synchronized是一个Java关键字,两者有本质的不同
  • Lock需要手动释放锁,synchronized是自动释放锁
  • Lock适合大量同步的代码同步,synchronized适合少量代码的同步
  • Lock可以判断是否获得锁的状态,synchronized无法判断是否获得锁的状态

  所以Lock的使用是比synchronized要灵活的,因为Lock可以多路分支通知,因为synchronized实现线程之间的通信是通过使用wait()和notify()与notifyAll()来实现线程之间的通信的,但是JVM唤醒线程是随机的不可控,Lock作为通过手动唤醒的方法,是可以做到想让谁唤醒就让谁唤醒的。

Lock通过Condition实现等待/通知

 

posted @ 2019-12-11 10:43  一位神秘丐帮  阅读(461)  评论(0编辑  收藏  举报