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


posted @ 2016-12-27 15:09  冰镇矿泉水  阅读(277)  评论(0编辑  收藏  举报