Synchronized的大概有4中用法java
1.修饰一个方法,如:this
public synchronized void count(){ }
在这种状况下,一个对象一次只能有一个线程能够访问该方法。若是是类的不一样实现对象,访问同一接口不会受到影响。若是该类中有多个方法都添加了synchronized方法,则一个对象调用其中一个synchronized方法时,该对象的其余线程不容许调用其余synchronized方法线程
2.修饰一个代码块,如code
public void count(){ synchronized(this){ } }
在这种状况下,同一个对象,一次只能有一个线程访问代码块中的代码对象
3.修饰一个静态方法,如接口
public synchronized static void count(int time){ }
因为静态方法是属于类的,因此该类的全部实现对象,一次只能有一个线程使用该方法class
4.修饰一个类,如方法
public class ThreadSync{ public void count(int time){ synchronized (ThreadSync.class){ } } }
在这种状况下,该类的全部实现对象,一次只能有一个线程访问代码块中的代码im