ReentrantLock与synchronized的区别

这篇具有很好参考价值的文章主要介绍了ReentrantLock与synchronized的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

synchronized 基于代码块的方式控制加锁与解锁
ReentrantLock 基于 lock(加锁) 与 unlock(解锁) 方式控制加锁与解锁

🔎区别1

synchronized 只是单纯的加锁与解锁

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

ReentrantLock 对于加锁失败提供了额外的 tryLock方法
通过tryLock方法可以直接返回false, 由程序员决定接下来做什么


🔎区别2

synchronized 是一个非公平锁

ReentrantLock 提供了公平锁与非公平锁两种
默认状态下是一个非公平锁
对于 ReentrantLock 的公平锁, 需要在构造方法中加入 true
ReentrantLock与synchronized的区别


🔎区别3

对于synchronized
通常搭配 wait, notify 进行使用
如果多个线程 wait 同一个对象, 那么 notify 的时候是随机的

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


🔎结尾

创作不易,如果对您有帮助,希望您能点个免费的赞👍
大家有什么不太理解的,可以私信或者评论区留言,一起加油文章来源地址https://www.toymoban.com/news/detail-409288.html

到了这里,关于ReentrantLock与synchronized的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java进阶(6)——抢购问题中的数据不安全(非原子性问题)& Java中的synchronize和ReentrantLock锁使用 & 死锁及其产生的条件

    1.大量请求拥挤抢购中的数据不安全问题; 2.事务ACID:原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability); 3.线程安全特征:原子性(Atomicity)可见性(Visibility)有序性(Ordering); 4.java中的锁初步,synchronize锁和ReentrantLock锁使用初步; 5.滥用锁的问

    2024年02月11日
    浏览(40)
  • Lock和synchronized的区别

    1、Lock是一个接口,而synchronized是一个Java,synchronized是内置的语言实现,Lock是代码层面的实现 2、Lock可以选择性的获取锁,如果一段时间获取不到,咋可以不要了。synchronized不行,不达目的不罢休。借助这个特性,Lock可以避免死锁,而synchronized不惜通过谨慎的设计才

    2024年02月08日
    浏览(39)
  • lock 和synchronized 的区别

    1  lock是接口实现,synchronized是内置方法native实现 2 lock可以主动释放锁,synchronized只能是加锁的代码块执行完毕或者遇到异常退出被动的释放锁 3 性能方面,如果竞争资源不是很激烈的情况,两者的性能差不太多,如果是在竞争资源激烈的情况下,lock的性能要优于synchronize

    2024年02月08日
    浏览(42)
  • Java——》Synchronized和Lock区别

    推荐链接:     总结——》【Java】     总结——》【Mysql】     总结——》【Redis】     总结——》【Kafka】     总结——》【Spring】     总结——》【SpringBoot】     总结——》【MyBatis、MyBatis-Plus】     总结——》【Linux】     总结——》【MongoDB】    

    2024年02月09日
    浏览(41)
  • Synchronized与Lock的区别和优缺点

    1.   synchronized 是 Java 的一个内置特性,而 Lock 是 Java 的一个接口类; 2.   synchronized 在发生异常时会自动释放线程占用的锁,而 Lock 在发生异常时(不发生也一样)需要主动在 finally 中调用 unLock() 去释放锁; 3.   Lock 可以让等待锁的线程响应中断,而 synchronized 无法

    2024年02月08日
    浏览(47)
  • Autosar RTE C/S接口实现及synchronous与asynchronous的区别

    在之前的一篇文章中,介绍了RTE中的S/R接口,也是RTE中使用最多的接口。在Autosar定义的Interface中,分为Require Ports(需求接口,对应的S/R接口中的 Receiver接口 ,C/S接口中的 Client接口 )和Provide Ports(提供接口,对应S/R接口中的 Sender接口 ,C/S接口中的 Server接口 )。 S/R接口主要针对

    2024年02月10日
    浏览(42)
  • 16.ReentrantLock全解读

    大家好,我是王有志,欢迎和我聊技术,聊漂泊在外的生活。快来加入我们的Java提桶跑路群:共同富裕的Java人。 经历了AQS的前世和今生后,我们已经知道 AQS是Java中提供同步状态原子管理,线程阻塞/唤醒,以及线程排队功能的同步器基础框架 。那么我们今天就来学习通过

    2024年02月02日
    浏览(37)
  • 面试之ReentrantLock

    ReentrantLock实现了Lock接口,是一个可重入且独占式的锁,和Synchronized类似,不过ReentrantLock更灵活,更强大, 增加了轮询、超时、中断、公平锁和非公平锁等高级功能。 ReentrantLock 里面有一个内部类 ,Sync 继承 AQS(AbstractQueuedSynchronizer),添加锁和释放锁的大部分操作实

    2024年02月12日
    浏览(36)
  • 从ReentrantLock角度解析AQS

    是它,是它,就是它,并发包的基石; 闲来不卷,随便聊一点。 一般情况下,大家系统中至少也是JDK8了,那想必对于JDK5加入的一系列功能并不陌生吧。那时候重点加入了 java.util.concurrent 并发包,我们简称为JUC。JUC下提供了很多并发编程实用的工具类,比如并发锁lock、原子

    2023年04月14日
    浏览(39)
  • Java中的ReentrantLock实现原理

    在并发编程中,线程安全问题一直是非常重要的问题。Java中提供了多种解决线程安全问题的机制,其中一个比较常用的就是ReentrantLock。本文将介绍ReentrantLock的实现原理,从原子性、可见性等方面解释并结合源码分析,以便更好地理解在多线程环境下实现线程安全的过程。

    2024年02月01日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包