Java——》synchronized的原理

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

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

    snchronized是基于对象实现的(JVM——》Java对象内存模型),通过在对象头设置标记,达到了获取锁和释放锁的目的。


    synchronized 是由JVM实现的互斥同步的一种方式(Java——》synchronized互斥性)。查看被synchronized 修饰过的程序块编译后的字节码,会发现在编译前后被编译器生成了monitorentermonitorexit 两个字节码指令(Java——》synchronized编译)。文章来源地址https://www.toymoban.com/news/detail-708301.html

  1. 在虚拟机执行到monitorenter 指令时,首先要尝试获取对象的锁。如果这个对象没有锁定,或者当前线程已经拥有了这个对象的锁,把锁的计数器+1。如果获取对象失败了,那当前线程就要阻塞等待,直到对象锁被另外一个线程释放为止。
  2. 当虚拟机执行到monitorexit 指令时,将锁的计数器-1。 当计数器为0时,锁就被释放了。

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

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

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

相关文章

  • Java——》synchronized的使用

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

    2024年02月09日
    浏览(33)
  • 【Java 并发编程】一文详解 Java 内置锁 synchronized

    存在共享数据; 多线程共同操作共享数。 synchronized 可以保证在同一时刻,只有一个线程可以执行某个方法或某个代码块,同时 synchronized 可以保证一个线程的变化可见(可见性),即可以代替 volatile。 多线程编程中,有可能会出现多个线程同时访问同一个共享、可变

    2024年02月02日
    浏览(35)
  • Java中synchronized的优化

    本文介绍为了实现高效并发,虚拟机对 synchronized 做的一系列的锁优化措施 高效并发是从 JDK5 升级到 JDK6 后一项重要的改进项,HotSpot 虚拟机开发团队在 JDK6 这个版本上花费了大量的资源去实现各种锁优化技术,如适应性自旋(Adaptive Spinning)、锁消除(Lock Elimination)、锁膨

    2024年02月04日
    浏览(45)
  • java并发:synchronized锁详解

            在java多线程当中,我们总有遇到过多个线程操作一个共享数据时,而这个最后的代码执行结果并没有按照我们的预期一样得到正确的结果。此时我们就需要让代码执行在操作共享变量时,要等一个线程操作完毕时,另一个线程才能去操作这个共享变量。synchroniz

    2024年02月12日
    浏览(37)
  • Java关键词synchronized

    目录 一、通过卖票系统观察多线程的安全隐患 二、synchronized的基本知识 1.使用synchronized的原因 2.synchronized的作用 3.synchronized的基本格式   a.synchronized加在方法名前   b.synchronized用在方法中 4. Java锁机制 5.synchronized注意事项 三、使用synchronized修改卖票系统代码 运行结果: 运行

    2024年02月09日
    浏览(75)
  • Java中synchronized的用法

    在Java中,synchronized是一种同步机制,可用于控制多个线程在访问共享资源时的并发问题。synchronized可以修饰方法和代码块,以确保共享资源的互斥访问,从而避免不同线程间访问该资源时发生冲突。 synchronized的用法包括以下几种: 1. 同步方法 使用synchronized修饰方法,可以确

    2024年02月16日
    浏览(38)
  • Java-synchronized实现详解(从Java到汇编)

    synchronized作为java语言中的并发,其在代码中出现的频率相当高频,大多数开发者在涉及到并发场景时,一般都会下意识得选取synchronized。 synchronized在代码中主要有三类用法,根据其用法不同,所获取的锁对象也不同,如下所示: 修饰代码块:这种用法通常叫做同步代

    2024年02月01日
    浏览(36)
  • Java关键字之synchronized详解【Java多线程必备】

    点击   Mr.绵羊的知识星球  解锁更多优质文章。 目录 一、介绍 二、特性 1. 线程安全 2. 互斥访问 3. 可重入性 4. 内置锁 三、实现原理 四、和其他锁比较 1. 优点 2. 缺点 五、注意事项和最佳实践 六、使用案例 1. 案例一 2. 案例二     synchronized是Java中最基本的同步机制之一,

    2024年01月24日
    浏览(46)
  • Synchronized与Java线程的关系

    ​ Java多线程处理任务时,为了线程安全,通常会对共享资源进行加锁,拿到锁的线程才能进行访问共享资源。而加锁方式通过都是Synchronized锁或者Lock锁。 ​ 那么多线程在协同工作的时候,线程状态的变化都与锁对象有关系。 ​ Java采用synchronized、以互斥同步的方式

    2024年02月11日
    浏览(31)
  • Java 关键字:synchronized详解

    Java中的synchronized用于在多线程环境下确保数据同步。它可以用来修饰方法和代码块 当一个线程访问一个对象的synchronized方法或代码块时,其他线程将无法访问该对象的其他synchronized方法或代码块。这样可以确保在同一时间只有一个线程能够执行该代码块或方法,避免

    2024年02月08日
    浏览(49)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包