同步代码块,是锁这个对象
synchronized (this){
...
}
同步实例方法,也是锁这个对象
public synchronized void fun1(){
...
}
相当于将方法里的所有语句用synchronized (this){}包裹
public void fun1(){
synchronized(this){
...
}
}
同步类, 是锁的这个类,或者说是字节码,这个类的所有对象只有这一把锁。
synchronized(ClassName.class) {
...
}
同步静态方法,也是锁这个类
public synchronized static void method() { ... }
相对于
public static void method() {
synchronized(ClassName.class) { ... }
}
参考: