【java】 synchronizd与ReentrantLock的区别与联系

面试题:synchronized与ReentrantLock的关系和区别。

  1. 关系:
    • synchronized与ReentrantLock都属于独占锁的实现,都属于可重入锁。
  2. 区别:
    • synchronized 是关键字,JVM层面的实现,ReentrantLock是java语言层面的实现。
    • ReentrantLock具备一些synchronized不具备的特性,如响应中断,支持超时,支持非阻塞式获取锁,可以实现公平锁(默认为非公平锁)。
    • synchronized只有一个等待队列,而Lock调用newCondition()可以产生多个等待队列(实现生产者消费者模型,利用Condition的await/signal实现等待唤醒)。

问题:synchronized与Lock 有什么区别。

基本与上面相同,不过Lock中还有一个ReentrantReadWriteLock:可重入读写锁。

你可能感兴趣的:(【java】 synchronizd与ReentrantLock的区别与联系)