主要来源:http://blog.csdn.net/luoweifu/article/details/46613015
1.synchronized(this)
void method(){
synchronized(this){
}
}
锁住当前对象,只允许一个线程访问该代码块。
注意
SynThread s = new SynThread();
Thread a = new Thread(s);
Thread b = new Thread(s);
//适用与相同对象
Thread a = new Thrread(new SynThread());
Thread b = new Thrread(new SynThread());
//不适用不同的对象
那么如何解决不同对象的问题呢??
static void synchronized method(){ }//同一个类的不同对象拥有同一把锁
那么
void synchronized method(){ }
又有什么作用?
参考
void method(){
synchronized(this){
}
} 当然synchronized(obj){}也是可以的,那么它的作用就是同一时间只能有一个线程访问该对象的方法。
当然其他的线程可以访问其他没有被锁的方法。