一.相同点
都是阻塞式同步
也就是悲观锁
二.区别
1.功能区别
Synchronized是java语言的关键字,是由jvm实现的。而ReentrantLock它是JDK 1.5之后提供的API层面的互斥锁,需要lock()和unlock()方法配合try/finally语句块来完成。
2.性能区别
自从Synchronized引入了偏向锁,轻量级锁后,两者的性能就差不多了,在两种方法都可用的情况下,官方甚至建议使用synchronized。
3.ReentrantLock的高级点
1.等待可中断
2.公平锁
3.锁绑定多个条件,
一个ReentrantLock对象可以同时绑定对个对象。ReenTrantLock提供了一个Condition(条件)类,用来实现分组唤醒需要唤醒的线程们,而不是像synchronized要么随机唤醒一个线程要么唤醒全部线程。
参考文档:https://blog.csdn.net/zxd8080666/article/details/83214089
网友评论