synchronized锁原理:基于对象实现,对象会在内存中开辟一片空间来存储对象头,对象头中存储着MarkWord,而MarkWord里又标记了各个锁在不同状态下要存储的信息;像偏向锁直接指向线程,而轻量级锁直接存放在lock record里,重量级锁直接存放在ObjectMonitor中。
synchronized和ReetrantLock区别:ReetrantLock是类,synchronized是个关键字,都是再JVM层面实现互斥锁,如果锁竞争比较激烈时,推荐使用ReetrantLock因为不存在锁升级;ReetrantLock基于AQS实现,synchronized是基于ObjectMonitor实现的,ReetrantLock支持公平锁和非公平锁;synchronized只支持非公平锁。