synchronized的使用方法共四种:
1.在方法声明时使用
1.在方法声明时使用
位置在public/protect/private之后,返回类型声明void之前。线程获得的是成员锁,即一次只能有一个线程进入该方法,其他线程要想在此时调用该方法,只能排队等候,当前线程(就是在synchronized方法内部的线程)执行完该方法后,别的线程才能进入。
public synchronized void Ot(){
//
}
2.在对某一代码块时使用,线程获得的是成员锁
public void Ot(int h){
synchronized(h){
//
}
}
3.对某一对象使用,线程获得的是对象锁
Runnable oTRunnable=new Runnable() {
@Override
public void run() {
synchronized (this) {
//
}
}
};
4.对某一类使用对象锁,比如单例的加锁:
public static Singleton getInstance() {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
return instance;
}