对象的内存布局
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++;
}
}
}