public synchronized void method1(){}
   public  void method2(){
        synchronized  (obj){}
   }
两种方法有什么区别

解决方案 »

  1.   

       我觉得应该是method1()不会进入方法体,而method2()会进入方法体,可能会在性能上有稍微的差距吧。
       但是如果方法内还有别的代码就不一样了,可以看下这个帖子:http://topic.csdn.net/u/20100701/18/129d57c7-b9aa-4664-ab64-26314f5bae52.html?67823
      

  2.   

    用的监视锁不一样!public synchronized void method1(){}等于:public void method1() {
        synchronized(this) {
            ...
        }
    }
      

  3.   

    method1用的是this对象的监视器,而method2 用的是obj这个对象的监视器
    看看马士兵的讲线程的那个视频就会明白的
      

  4.   

    2楼正解!不赘述!
    synchronized (obj)表示对Obj加锁,进入方法块后,其他线程不能访问枷锁的对象。省略obj默认this