synchronized的使用及注意事项
主要来源: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){}也是可以的,那么它的作用就是同一时间只能有一个线程访问该对象的方法。
当然其他的线程可以访问其他没有被锁的方法。