对象的内存布局

Mark Word


Synchronized锁膨胀过程




Synchronized加锁的几种方式
// 锁对象为对象A
public class A {
private int i;
public synchronized void increase(){
i++;
}
}
// 锁对象为对象A
public class A {
private int i;
public void increase(){
synchronized (this) {
i++;
}
}
}
// 锁对象为对象obj
public class A {
private int i;
private Object obj = new Object();
public void increase(){
synchronized (obj) {
i++;
}
}
}
// 锁对象为A.class
public class A {
private int i;
public synchronized static void increase(){
i++;
}
}
// 锁对象为A.class
public class A {
private int i;
public void increase(){
synchronized (A.class) {
i++;
}
}
}

网友评论