本质上,如果您的对象仅由一个线程锁定,则JVM可以进行优化,并将该对象“偏向”该线程,以使对该对象进行后续的原子 *** 作不会产生同步开销。我想这通常是针对过于保守的代码,该代码对对象执行锁定而从未将它们暴露给另一个线程。实际的同步开销只会在另一个线程尝试获取该对象的锁时才起作用。
在Java 6中,默认情况下处于启用状态。
-XX:+
UseBiasedLocking启用一项技术,以提高无竞争的同步性能。一个对象被“偏向”线程,该线程首先通过Monitorenter字节码或同步方法调用来获取其监视器。在多处理器计算机上,该线程执行的后续与监视器相关的 *** 作相对要快得多。启用此标志后,某些具有大量无竞争的同步的应用程序可能会实现显着的加速。尽管已尝试将负面影响降到最低,但某些具有某些锁定模式的应用程序可能会变慢。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)