public synchronized method 
相当于
public method()
{
    synchronized(this)
    {
        ...
    }
}
所以,method1 和 method2两个方法是一起同步的,如果某个thread进入了一个synchronized方法,则别的线程将不能进入该对象的所有synchronized方法。

解决方案 »

  1.   

    synchronized  可以同步一个类,也可以同步一个方法,象你所说的应该是同步一个方法,就是指一个线程进入了一个同步方法,所以其他线程就只能等待,直到这个线程退出,如果你同步的是这个类,那么其他线程就不能调这个类的任何方法,直到进入的线程退出,不过强烈推荐,同步方法的做法
      

  2.   

    这个public synchronized method
    好像比这个
    public method()
    {
        synchronized(this)
        {
            ...
        }
    }
    有效率些
      

  3.   

    总的来说,对一个method进行synchronize,实际上相当于对整个类实例synchronize
      

  4.   

    synchronized保护的不是方法,而是this对象,因此是不可以的
      

  5.   

    synchronized(this)
        {
            ...
        }
    也不行,这只能同步当前对象的线程,
    你如果想几个不同的实例都排队访问,
    应该写成:
    synchronized(a.class)  //a是你定义的类名
        {
            ...
        }
      

  6.   

    java中的所有对象都继承object,所以都具有对象级别锁,如搂住的代码,获得的就是对象级别锁,一旦一个thread操作对象,就会把整个对象锁住,别的thread就不可以操作对象了。一般编程中,不这样用,太粗糙了,参考下面的代码:
    class a
    {
       private x;
       private y;
       final object o = new Object();
       public void method(){
          synchromized(o){
             access x;
          }
          synchronized(this){
         
            access x and y; 
         }
       }
    }
      

  7.   

    java中的所有对象都继承object,所以都具有对象级别锁,如搂住的代码,获得的就是对象级别锁,一旦一个thread操作对象,就会把整个对象锁住,别的thread就不可以操作对象了。一般编程中,不这样用,太粗糙了,参考下面的代码:
    class a
    {
       private x;
       private y;
       final object o = new Object();
       public void method(){
          synchromized(o){
             access x;
          }
          synchronized(this){
         
            access x and y; 
         }
       }
    }
      

  8.   

    同意:taolei(实在无聊)的说法.
      

  9.   

    别的线程将不能进入该对象的<b>所有</b>synchronized方法呢
      

  10.   

    同步的是对象不是方法或类对于楼主的class a,这个类根本不需要做任何同步,因为你的a里没有任何的成员属性,只有2个方法。当你a a1 = new a();以后,创建对象a1,a1.method1(),将把a1所引用的对象加锁,直到方法执行完毕,这时,如果有线程仍然是a1.method1()或a1.method2(),是不可以的,因为a1所引用的对象已经被锁。但是你要是a a2 = new a();a2.method1()或a2.method2()是可以的,因为你是对a2所引用的对象进行操作,而对a1没有任何影响,能明白我意思吗?明白就加分吧,我是新人,穷着那。刚问一问题,还没人回答就散了50了。