Synchronized的大概有4中用法
1.修饰一个方法,如:
public synchronized void count(){
}
在这种情况下,一个对象一次只能有一个线程可以访问该方法。如果是类的不同实现对象,访问同一接口不会受到影响。如果该类中有多个方法都添加了synchronized方法,则一个对象调用其中一个synchronized方法时,该对象的其他线程不允许调用其他synchronized方法
2.修饰一个代码块,如
public void count(){
synchronized(this){
}
}
在这种情况下,同一个对象,一次只能有一个线程访问代码块中的代码
3.修饰一个静态方法,如
public synchronized static void count(int time){
}
由于静态方法是属于类的,所以该类的所有实现对象,一次只能有一个线程使用该方法
4.修饰一个类,如
public class ThreadSync{
public void count(int time){
synchronized (ThreadSync.class){
}
}
}
在这种情况下,该类的所有实现对象,一次只能有一个线程访问代码块中的代码