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