2013-02-05 56 views
-1

的一個例子,它似乎是一個死鎖情況可以說下面的代碼是我用下面的代碼試圖僵局

public class MyThread { 

    public static void main(String[] args) { 
     try { 
      Thread.currentThread().join(); 
     } catch (InterruptedException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 

,但我懷疑這是不是這樣的。它不是一個僵局。我所理解的是Main線程正在等待自己的完成。我已經深入瞭解,但加入內部的等待方法是本地的,我無法獲得更多的信息。

+1

請參閱http://stackoverflow.com/questions/5999595/thread-join-on-it-本人 – njzk2

+0

請先詢問。 – njzk2

+0

也許這將有助於: http://stackoverflow.com/questions/5999595/thread-join-on-it-本身 – bpoiss

回答

2

維基百科

「死鎖是一種情況,即兩個或兩個以上相互競爭的行動都在等待對方來完成,因而永遠都不做。」

在這種情況下,您正在等待線程完成,並且該線程正在等待任務完成。雖然你只有一個線程,但仍然有一個死鎖恕我直言。

僅供參考請參閱您是否可以發現此代碼中的死鎖。

public class Main { 
    static String HI = "Hello World"; 

    static { 
     Thread t = new Thread() { 
      @Override 
      public void run() { 
       System.out.println(HI); 
      } 
     }; 
     t.start(); 
     try { 
      t.join(); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
    } 

    public static void main(String... args) { 
    } 
} 

順便說一句,如果你使HI最終它沒有死鎖。 ;)