Synchronized和ReentrantLock有什么不同之处呢?
转自:
http://www.java265.com/JavaMianJing/202205/16525413643372.html
同步锁:
同步锁是为了保证每个线程都能正常执行原子不可更改操作,同步监听对象/同步锁/同步监听器/互斥锁的一个标记锁.
下文笔者讲述Synchronized和ReentrantLock的不同之处,如下所示:
1.实现方式不同
Synchronized是JVM层面的关键字
ReentrantLock是API层面
2.可修改对象范围不同
Synchronized可以修饰代码块和方法
ReentrantLock只能用于代码块
3.操作方式不同
Synchronized不需要手动释放锁
ReentrantLock需要手动释放锁
4.锁方式不同
Synchronized是非公平锁
ReentrantLock 可以通过参数指定为公平或者非公平
5.中断方式不同
Synchronized等待不能中断
ReentrantLock 等待可以中断,tryLock 可以设置等待时长;
6.是否可重入
Synchronized和ReentrantLock都是可重入锁


