ReentreantLock和sychronized的区别

一.相同点

都是阻塞式同步
也就是悲观锁

二.区别

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

你可能感兴趣的:(ReentreantLock和sychronized的区别)