synchronized的使用方法
1.普通同步方法
public synchronized void method1(){ …… };
锁的是当前实例对象
2. 同步方法块
synchronized (this) { …… };
锁是括号里面的对象,this就是当前对象了
3.静态同步方法
public static synchronized void method1(){ …… };
锁是当前类的class对象。
这与普通同步方法锁的对象是不一样的。静态同步方法锁的是一个类(静态方法只要类名),普通同步方法锁的是一个对象,两者互不干扰。
4. 同步静态域及静态方法
还有一种方法能锁静态域以及静态方法,那就是锁住类。
synchronized (.class) { …… };