public class Thread1 extends Thread { public void run() { 
  synchronized(this) { 
    for (int i = 0; i < 55; i++) { 
      System.out.println(Thread.currentThread().getName() + " synchronized loop " + i); 
    } 
  } 
} public static void main(String[] args) { 
  Thread1 ta = new Thread1(); 
  Thread1 tb = new Thread1(); 
  ta.start(); 
  tb.start(); 
  } 
}
怎么得不到我想要的结果啊?他执行完是:
Thread-0 synchronized loop 0
Thread-0 synchronized loop 1
Thread-0 synchronized loop 2
Thread-0 synchronized loop 3
Thread-0 synchronized loop 4
Thread-0 synchronized loop 5
Thread-0 synchronized loop 6
Thread-1 synchronized loop 0
Thread-0 synchronized loop 7
Thread-1 synchronized loop 1
Thread-0 synchronized loop 8
Thread-1 synchronized loop 2
Thread-0 synchronized loop 9
Thread-1 synchronized loop 3
Thread-1 synchronized loop 4
Thread-1 synchronized loop 5
Thread-1 synchronized loop 6
Thread-1 synchronized loop 7
Thread-1 synchronized loop 8
Thread-1 synchronized loop 9而我想要的是:Thread-0 synchronized loop 0 
Thread-0 synchronized loop 1 
Thread-0 synchronized loop 2 
Thread-0 synchronized loop 3 
Thread-0 synchronized loop 4 
Thread-0 synchronized loop 5 
Thread-0 synchronized loop 6 
Thread-0 synchronized loop 7
Thread-0 synchronized loop 8 
Thread-0 synchronized loop 9 
Thread-1 synchronized loop 0 
Thread-1 synchronized loop 1 
Thread-1 synchronized loop 2 
Thread-1 synchronized loop 3 
Thread-1 synchronized loop 4  
Thread-1 synchronized loop 5
Thread-1 synchronized loop 6 
Thread-1 synchronized loop 7
Thread-1 synchronized loop 8
Thread-1 synchronized loop 9

解决方案 »

  1.   

    public class Thread1 extends Thread { public void run() { 
      synchronized(this) { 
        for (int i = 0; i < 10; i++) { 
          System.out.println(Thread.currentThread().getName() + " synchronized loop " + i); 
        } 
      } 
    } public static void main(String[] args) { 
      Thread1 ta = new Thread1(); 
      Thread1 tb = new Thread1(); 
     
    try{
      ta.start();
            Thread.sleep(1000);
      tb.start();
      Thread.sleep(1000);
            ta.join();
            tb.join();}catch(Exception e){
    }
      }
    }
      

  2.   

    一楼的程序无趣
    二楼的程序更无趣to:楼主,想要你希望的结果,有很多办法
    第一:
    Thread1 ta = new Thread1(); 
    Thread1 tb = new Thread1(); 
    ta.start(); 
    ta.join();
    tb.start();
    第二:
    synchronized(this)
    改为
    synchronized(Thread1.class)
    不过这种程序is awful!