synchronized锁住的对象
1、synchronize实例方法,锁为当前实例。
public synchronized void instanceLock() {
// code
}
2、synchronize静态方法,锁为当前class对象。
public static synchronized void instanceLock() {
// code
}
3、synchronize块,锁为括号里的对象
括号里面是this,与第一种写法等价。
public void blockLock() {
synchronized (this) {
// code
}
}
括号里面是this.getClass(),与第二种写法等价
public void blockLock() {
synchronized (this.getClass()) {
// code
}
}
synchronized(Syn.class){},锁是Syn类,对类Syn的所有对象起作用。
synchronized(任意对象){},锁住的是这个任意对象。