当前位置: 首页 > 面试题库 >

Java中的偏向锁定

窦国源
2023-03-14
问题内容

我一直在阅读有关使用flag的有偏锁定如何-XX:+UseBiasedLocking提高无竞争的同步性能的信息。我找不到它做什么以及如何提高性能的参考。

谁能解释我的确切含义,或者可以指出一些链接/资源来解释我?


问题答案:

本质上,如果您的对象仅由一个线程锁定,则JVM可以进行优化,并将该对象“偏向”该线程,以使对该对象进行后续的原子操作不会产生同步开销。我想这通常是针对过于保守的代码,该代码对对象执行锁定而从未将它们暴露给另一个线程。实际的同步开销只会在另一个线程尝试获取该对象的锁时才起作用。

在Java 6中,默认情况下处于启用状态。

-XX:+
UseBiasedLocking启用一项技术,以提高无竞争的同步性能。一个对象被“偏向”线程,该线程首先通过Monitorenter字节码或同步方法调用来获取其监视器。在多处理器计算机上,该线程执行的后续与监视器相关的操作相对要快得多。启用此标志后,某些具有大量无竞争的同步的应用程序可能会实现显着的加速。尽管已尝试将负面影响降到最低,但某些具有某些锁定模式的应用程序可能会变慢。



 类似资料:
  • 主要内容:一、简介,二、Java对象头中的Mark Word,三、偏向锁,四、轻量级锁,五、重量级锁,六、自旋锁,七、锁升级过程一、简介 在讲解这些锁概念之前,我们要明确的是这些锁不等同于Java API中的ReentratLock这种锁,这些锁是概念上的,是JDK1.6中为了对synchronized同步关键字进行优化而产生的的锁机制。这些锁的启动和关闭策略可以通过设定JVM启动参数来设置,当然在一般情况下,使用JVM默认的策略就可以了。 二、Java对象头中的Mark Word HotSpo

  • 我试着给NFC NTAG 213芯片写一条NDEF短信。为此我使用了nfcpy库。现在的问题是,我想在芯片上锁定一个特定的NDEF文本记录,并想在以后修改或添加不同的记录。 通常,您只能使用nfcpy库锁定整个芯片。我考虑只锁定为我要锁定的记录编写的页面。当我只锁定存储数据的页面时,我无法将任何其他NDEF记录写入芯片。 有没有办法创建偏移量,或者有没有专门的填充机制?还是一个订单中只能有几个ND

  • 我在学习Java中的重入锁定。需要一定的澄清这个概念,它实际上是如何工作的。下面的片段我所理解的是:

  • 本文向大家介绍详解Java中的ReentrantLock锁,包括了详解Java中的ReentrantLock锁的使用技巧和注意事项,需要的朋友参考一下 ReentrantLock锁 ReentrantLock是Java中常用的锁,属于乐观锁类型,多线程并发情况下。能保证共享数据安全性,线程间有序性 ReentrantLock通过原子操作和阻塞实现锁原理,一般使用lock获取锁,unlock释放锁,

  • 问题内容: 我正在尝试将字段映射为nGram和“精确”匹配,并使精确匹配首先出现在搜索结果中。这是对类似问题的解答,但我正努力使其工作。 无论我为“精确”字段指定什么提升值,每次都会得到相同的结果顺序。这是我的字段映射的外观: 这就是查询的样子: 问题答案: multi_field映射是正确的,但是搜索查询需要像这样更改: 现在,结果将“精确”匹配考虑在内,并加总得分。

  • 我有一个名为“H2O问题”的家庭作业,我应该实现一个名为H2OBarrier的类,它有3种方法。 HReady,氢原子(线程)就绪时称为的方法 OReady,氧原子(线程)就绪时调用的方法 makeWater,当2个氢原子和1个氧原子准备就绪时称为方法 我应该使用Java可重入锁和条件来执行此操作。 这是我目前为止的代码,我想知道我是否正确地使用了lock和unlock。 我应该在我的 makeW