ReentrantLock与synchronized的区别

简介: ReentrantLock与synchronized的区别

synchronized 基于代码块的方式控制加锁与解锁

ReentrantLock 基于 lock(加锁) 与 unlock(解锁) 方式控制加锁与解锁

🔎区别1

synchronized 只是单纯的加锁与解锁

ReentrantLock 对于加锁成功与synchronized 并无区别

ReentrantLock 对于加锁失败提供了额外的 tryLock方法

通过tryLock方法可以直接返回false, 由程序员决定接下来做什么


🔎区别2

synchronized 是一个非公平锁

ReentrantLock 提供了公平锁与非公平锁两种

默认状态下是一个非公平锁

对于 ReentrantLock 的公平锁, 需要在构造方法中加入 true


🔎区别3

对于synchronized

通常搭配 wait, notify 进行使用

如果多个线程 wait 同一个对象, 那么 notify 的时候是随机的

对于ReentrantLock

通常搭配 Condition 这个类, 这个类也能起到等待通知的作用, 而且当多个线程等待同一个对象时, 可以指定一个线程通知


🔎结尾

创作不易,如果对您有帮助,希望您能点个免费的赞👍

大家有什么不太理解的,可以私信或者评论区留言,一起加油

相关文章
|
4月前
|
存储 Java 程序员
synchronized的原理以及与ReentrantLock的区别
`synchronized`和`ReentrantLock`均为Java线程同步机制,确保共享资源的单一时刻独占访问。`synchronized`关键字直接嵌入JVM,可通过修饰方法或代码块实现对象锁或监视器锁,具备可重入性,依赖Mark Word进行锁状态管理。`ReentrantLock`则需显式调用`lock()`和`unlock()`,提供更灵活控制,如公平锁、尝试锁及条件变量。两者在语法、灵活性和异常处理上有所差异,但均支持可重入性。性能方面,随JDK优化,`synchronized`在某些场景下甚至优于`ReentrantLock`。选择使用哪个取决于具体需求和上下文。
|
6月前
|
安全 Java 开发者
Java并发编程:深入理解synchronized和ReentrantLock
在Java并发编程中,正确使用同步机制是确保线程安全的关键。本文将深入探讨Java内置的两种同步机制——synchronized关键字和ReentrantLock类。我们将通过权威数据、经典理论和实际案例,对比分析它们的性能、用法和适用场景,帮助开发者做出明智的选择。
45 0
|
6月前
|
Java
Java并发编程:深入理解synchronized与ReentrantLock
【6月更文挑战第22天】本文将深入探讨Java并发编程中两个重要的同步机制:synchronized关键字和ReentrantLock类。我们将通过实例分析它们之间的差异,以及在实际应用中如何根据场景选择恰当的同步工具。
|
5月前
|
安全 Java 开发者
Java多线程:synchronized关键字和ReentrantLock的区别,为什么我们可能需要使用ReentrantLock而不是synchronized?
Java多线程:synchronized关键字和ReentrantLock的区别,为什么我们可能需要使用ReentrantLock而不是synchronized?
64 0
|
7月前
|
存储 安全 Java
|
7月前
synchronized与ReentrantLock区别与联系
synchronized与ReentrantLock区别与联系
43 0
ReentrantLock和Synchronized简单比较
ReentrantLock和Synchronized简单比较
50 0
|
Java 程序员
在Synchronized和ReentrantLock之间选择
在Synchronized和ReentrantLock之间选择
52 0
synchronized的总结
synchronized的总结
101 0
|
Java API 调度
synchronized 和 ReentrantLock 的实现原理是什么?它们有什么区别
synchronized 和 ReentrantLock 的实现原理是什么?它们有什么区别
89 0

热门文章

最新文章