2011-06-24 8 views
0
public class ThreadTest { 
    public static synchronized void m2() { 
     System.out.println("static sync m2"); 
     System.out.println("current"+Thread.currentThread()); 
     try { Thread.sleep(2000); } 
     catch (InterruptedException ie) {} 
    } 

    public static void main(String[] args) throws InterruptedException { 
     Thread t3 = new Thread() { 
      public void run() { 
       ThreadTest.m2(); 
      } 
     }; 
     t3.start(); 
     t3.sleep(2000); 
     Thread.sleep(500); // which thread are we sleeping here? 
     System.out.println("t3.getState"+t3.getState()); 
    } 
} 

別のスレッドt1を作成してThreadTest.m2これの中に?はい、これは許可されます、なぜこれは静的で、クラスレベルです。しかし、我々は非静的メソッドを持っている場合は、1と2のスレッドが方法クラスAにはJavaで2つの同期メソッドがあり、クラスBには2つの静的同期メソッドがあります.2つのスレッドがこれらの2つのシナリオにアクセスできるかどうかを確認します。

+0

あなたが「許可」またはメソッドにアクセスするには、「許されない」とはどういう意味ですか? m2()を呼び出すときにスレッドがブロックされるかどうかを参照していますか? – Shirik

答えて

関連する問題