synchronized是和if、else、for、while—样的关键字
ReentrantLock是类,这是二者的本质区别。既然ReentrantLock是类,那么它就提供了比 synchronized更多更灵活的特性,可以被继承、可以有方法、可以有各种各样的类变量, ReentrantLock比synchronized的扩展性体现在几点上:
1、 ReentrantLock可以对获取锁的等待时间进行设置,这样就避免了死锁
2、 ReentrantLock可以获取各种锁的信息
3、 ReentrantLock可以灵活地实现多路通知
另外,二者的锁机制其实也是不一样的。
ReentrantLock底层调用的是Unsafe的park方法加锁,synchronized操作的应该是对象头中 mark word,这点我不能确定。

Was this helpful?

0 / 0

发表回复 0

Your email address will not be published.