synchronized 基于代码块的方式控制加锁与解锁
ReentrantLock 基于 lock(加锁) 与 unlock(解锁) 方式控制加锁与解锁
synchronized 只是单纯的加锁与解锁
ReentrantLock 对于加锁成功与synchronized 并无区别
ReentrantLock 对于加锁失败提供了额外的 tryLock方法
通过tryLock方法可以直接返回false, 由程序员决定接下来做什么
synchronized 是一个非公平锁
ReentrantLock 提供了公平锁与非公平锁两种
默认状态下是一个非公平锁
对于 ReentrantLock 的公平锁, 需要在构造方法中加入 true
对于synchronized
通常搭配 wait, notify 进行使用
如果多个线程 wait 同一个对象, 那么 notify 的时候是随机的
对于ReentrantLock
通常搭配 Condition 这个类, 这个类也能起到等待通知的作用, 而且当多个线程等待同一个对象时, 可以指定一个线程通知
创作不易,如果对您有帮助,希望您能点个免费的赞
大家有什么不太理解的,可以私信或者评论区留言,一起加油