Synchronized 与 ReentrantLock有哪些相同点和不同点?

提问者:帅平 问题分类:面试刷题
Synchronized 与 ReentrantLock有哪些相同点和不同点?
1 个回答
最后一丝温柔
最后一丝温柔
Synchronized 与 ReentrantLock相同点有:
两者都是“可重入锁“,即当前线程获取到锁对象之后,如果想继续获取锁对象还是可以继续获
取的,只不过锁对象的计数器进行“+1”操作就可以了。

不同点有:
ReentrantLock是基于API实现的,Synchronized是依赖于JVM实现的;
ReentrantLock可以响应中断,Synchronized是不可以的;
ReentrantLock可以指定是公平锁还是非公平锁,而Synchronized只能是非公平锁;
ReentrantLock的lock是同步非阻塞,采用的是乐观并发策略,Synchronized是同步阻塞的,使用
的是悲观并发策略;
ReentrantLock借助Condition可以实现多路选择通知,Synchronized通过wait()和
notify()/notifyAll()方法可以实现等待/通知机制(单路通知);
发布于:3周前 (04-09) IP属地:澳大利亚
我来回答