Lock是代码级别的,synchronized是JVM级别的

公平

         Lock可以是公平所,也可以是不公平锁,默认是非公平锁,synchronized是非公平锁

释放

         Lock的释放必须手动调用unlock()方法,而synchronized在代码出了代码块或方法之后就会自动释放锁。

等待中断

         Lock中如果持有锁的线程长期不释放的时候,正在等待的线程可以选择放弃等待,但是synchroinzed不会

条件变量  

         Lock中可以有多个Condition来实现线程间通信,而synchronized是能通过当前锁来进行线程通信。

 

什么时候选择用ReetrantLock代替Synchronized

1、    在确实需要一些synchronized锁没有的特性的时候,比如时间锁等候、可中断锁等候、无块结构锁、多个条件变量或者锁投票的时候

2、    优先推荐synchronized开发,如果事实证明synchronized确实不合适,再用ReetrantLock开发。

相关文章:

  • 2022-12-23
  • 2021-10-19
  • 2021-10-13
  • 2022-12-23
  • 2021-07-01
  • 2021-05-25
猜你喜欢
  • 2021-10-08
  • 2022-12-23
  • 2021-07-27
  • 2022-12-23
  • 2021-10-01
  • 2021-06-26
  • 2022-02-08
相关资源
相似解决方案