`
annan211
  • 浏览: 461083 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java 锁的粗化

 
阅读更多

  在代码编写的过程中,如果出现不太适合的语法糖,JVM会自动调整,但是我们不应该寄予这种希望。
  如果jvm 接收到一连串的对锁的 锁定和释放,那么jvm会把这些请求整合成对锁的一次请求,就叫做锁的粗化。


 
      for(int i=0;i<100000;i++){
     synchronized(this){
       do();
   }
}


 synchronized(this){
   for(int i=0;i<100000;i++){
     do();
}
}



  虽然jvm会对上面这两端代码的最后一段进行优化,但是其执行性能仍然不是一个数量级的差距,可见,良好的编码习惯和深入的认识有多么重要。
分享到:
评论

相关推荐

    Java 锁粗化与循环问题

    Java 锁粗化与循环问题 Java 锁粗化是指合并使用相同锁对象的相邻同步块的过程,以减少锁开销。Hotspot 虽然进行了锁粗化优化,但是在循环中是否也可以进行这种优化?通过实验和分析,我们可以看到 Hotspot 的优化...

    彻底理解Java中的各种锁.pdf

    锁粗化是指将多个细粒度的锁操作合并为一个粗粒度的锁操作,以减少线程在获取和释放锁时产生的开销。锁消除是指在运行时,编译器检测到不可能存在共享数据竞争的锁操作时,会将其消除掉。 7. 死锁与锁的其他问题 当...

    JAVA锁的膨胀过程和优化.docx

    总结来说,Java锁的优化主要通过自旋锁、自适应自旋、锁粗化、锁衰退、偏向锁和轻量级锁等策略来实现。这些策略旨在平衡线程间的竞争与协作,减少不必要的同步开销,提高多线程环境下的程序性能。在实际开发中,理解...

    一个简单的java类,说明了锁的粒度

    粒度较粗的锁(如类级别锁)可能导致更多的线程阻塞,降低并发性,但管理起来简单,不易出现死锁。相反,粒度较细的锁(如实例级别锁)可以让更多线程并发执行,提高性能,但也可能增加锁竞争和死锁的风险。因此,在...

    Java并发篇乐观锁,悲观锁,自旋锁

    - **锁粗化**:避免对同一锁的频繁请求和释放,将多个连续的同步块合并。 - **锁消除**:编译器自动检测无锁化的可能,消除不必要的锁。 7. **线程**: - **线程方法**:wait()使线程进入WAITING状态,释放对象...

    提升Java的锁性能Java开发Java经验技巧共5页.p

    - 锁粗化:如果一系列连续的短时间同步操作可以合并为一个大锁,那么可以提高性能。 7. **使用并发编程模式** - **生产者-消费者模式**:`BlockingQueue`可以实现线程间的解耦,高效地传递数据。 - **工作窃取...

    实战JAVA虚拟机 JVM故障诊断与性能优化

    《实战JAVA虚拟机 JVM故障诊断与性能优化》这本书深入探讨了Java开发中不可或缺的Java虚拟机(JVM)技术,对于Java开发者来说,理解JVM的工作原理、故障诊断以及性能调优是至关重要的。以下将围绕这些主题展开详细的...

    Java高并发实战,锁的优化.docx

    本文主要探讨了Java中的锁优化技术,包括自旋锁、锁消退、锁粗化以及轻量级锁。 自旋锁是一种优化策略,其核心思想是当一个线程在尝试获取锁时,如果锁已经被其他线程持有,它不会立即进入阻塞状态,而是循环等待,...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     1.1.5 Java应用的持久化层  1.2 软件的模型  1.2.1 概念模型  1.2.2 关系数据模型  1.2.3 域模型  1.2.4 域对象  1.2.5 域对象之间的关系  1.2.6 域对象的持久化概念  1.3 小结  1.4 思考题 第2章 Java...

    Java程序自动锁分解重构.pdf

    Java 程序自动锁分解重构是指通过自动化的手段来重构 Java 程序中锁的粒度,以提高程序的并行性和性能。在并发编程中,锁机制是保护共享数据结构的常用方法,但是如果锁的粒度太粗,会导致程序的性能下降和并行性不...

    Java并发体系.pdf

    锁优化技术包括自旋锁、自旋锁的适应性版本、锁消除、锁粗化和轻量级锁。自旋锁让线程等待一段时间,如果持有锁的线程很快释放,就无需挂起;适应性自旋锁则根据历史情况动态调整自旋次数;锁消除针对无竞争情况直接...

    Java面试要点(适用于2年以上经验,1年亦可)

    6. 锁:CAS、乐观锁与悲观锁、数据库相关锁机制、分布式锁、偏向锁、轻量级锁、重量级锁、monitor、锁优化、锁消除、锁粗化、自旋锁、可重入锁、阻塞锁、死锁 7. happens-before、编译器指令重排和 CPU 指令重...

    【Java并发编程】Synchronized关键字实现原理.doc

    Java 并发编程 ...Synchronized 锁粗化是指 Java 虚拟机在运行时对锁的粗化过程。 7. 锁的优缺点对比 锁的优缺点对比是指锁的优点和缺点的对比。锁的优点是可以保障线程安全,缺点是会降低程序的执行效率。

    JAVA面试问题,随便看看

    4. 锁粗化:锁粗化指的是有很多操作都是对同一个对象进行加锁,就会把锁的同步范围扩展到整个操作序列之外。 5. 偏向锁:当线程访问同步块获取锁时,会在对象头和栈帧中的锁记录里存储偏向锁的线程 ID,之后这个...

    Java synchronized那点事.doc

    这篇文档主要探讨了Java synchronized的锁机制,包括锁粗化、偏向锁、轻量级锁、重量级锁以及锁升级的过程。 1. 锁粗化: 锁粗化是编译器或运行时环境为了减少锁的使用频率,将多个连续的同步块合并成一个大的同步...

    Synchronized_锁升级知识点总结

    锁粗化是将多处连续的锁操作合并为一个范围更大的锁,以减少线程竞争的次数。而锁消除是指JVM在编译代码时,通过逃逸分析,判断一个锁对象不可能被其他线程访问,那么JVM就可以把这个锁去掉,从而提升性能。 在实际...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     1.1.5 Java应用的持久化层  1.2 软件的模型  1.2.1 概念模型  1.2.2 关系数据模型  1.2.3 域模型  1.2.4 域对象  1.2.5 域对象之间的关系  1.2.6 域对象的持久化概念  1.3 小结  1.4 思考题 第2章 Java...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     1.1.5 Java应用的持久化层  1.2 软件的模型  1.2.1 概念模型  1.2.2 关系数据模型  1.2.3 域模型  1.2.4 域对象  1.2.5 域对象之间的关系  1.2.6 域对象的持久化概念  1.3 小结  1.4 思考题 第2章 Java...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     1.1.5 Java应用的持久化层  1.2 软件的模型  1.2.1 概念模型  1.2.2 关系数据模型  1.2.3 域模型  1.2.4 域对象  1.2.5 域对象之间的关系  1.2.6 域对象的持久化概念  1.3 小结  1.4 思考题 第2章 Java...

Global site tag (gtag.js) - Google Analytics