Synchronized 是Java中的一种锁实现,很多资料中都有说这是一个重量级锁(对其有许多优化,轻量级锁、偏向锁等),但是剔除这些优化的情况下,为什么 Synchronized 是一个重量级锁呢?
以下的思考基于 RentrantLock 和 Synchroinzed 展开
思考1 会不会是因为Synchronized关联了一个Monitor对象呢?
某面试官对我的回答: 这仅仅只是关联了一个对象,不足以让 Synchronized 称为重量级锁
思考2 会不会是因为维护了阻塞队列和等待队列呢?
不会,因为 ReentrantLock 和 Synchronized 都有维护阻塞队列和等待队列
在我上网查阅了资料和问了大佬后,得出了以下的总结:
首先需要理解的是,当锁被占用的时候,Synchronized和ReentrantLock的区别是不大的。原因如下: