【发布时间】:2014-07-22 06:33:17
【问题描述】:
HotSpot JVM(在 Oracle JDK 7 和 8 中)是否针对在同一对象上同步的嵌套 synchronized 块进行优化?
例如,第一个代码列表(A 类)是否与第二个代码列表(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
}
}
【问题讨论】:
标签: java optimization synchronization synchronized jvm-hotspot