gpt4 book ai didi

java - 针对嵌套同步块(synchronized block)的 HotSpot JVM 优化

转载 作者:太空宇宙 更新时间:2023-11-04 06:39:38 25 4
gpt4 key购买 nike

HotSpot JVM(在 Oracle JDK 7 和 8 中)是否针对在同一对象上同步的嵌套同步块(synchronized block)进行优化?

例如,第一个代码 list (A 类)与第二个代码 list (B 类)一样高效吗? (B 类避免了 A 类中出现的嵌套 synchronized (x))

public class A {
private final Object x = new Object();

public void a() {
synchronized (x) {
// code snippet 1
b();
// code snippet 2
}
}

public void b() {
synchronized (x) {
// code snippet 3
}
}
}

public class B {
private final Object x = new Object();

public void a() {
synchronized (x) {
// code snippet 1
c();
// code snippet 2
}
}

public void b() {
synchronized (x) {
c();
}
}

private void c() {
// code snippet 3
}
}

最佳答案

是的,JDK 7 中甚至出现了一个 VM 选项(默认情况下打开):

-XX:+EliminateNestedLocks

但是,它似乎仅在监视器对象为 static Final 或锁定 this 对象时才起作用。

关于java - 针对嵌套同步块(synchronized block)的 HotSpot JVM 优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24856486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com