2013-08-19 33 views
5

在調試多線程的java程序,我把斷點。啓動方法調用後,控制器不會運行,您可以讓我知道調試過程。日食Java多線程程序的調試

示例代碼

class Test extends Thread { 
    public static void main(String[] args) { 
     try { 
      Thread t = new Thread(new Test()); 
      t.start(); 
      t.start(); 
     } catch (Exception e) { 
      System.out.print("e "); 
     } 
    } 

    public void run() { 
     for(int i = 0; i < 2; i++) 
      System.out.print(Thread.currentThread().getName() + " "); 
    } 
} 
+0

請更明確或提供一些代碼。 – GGrec

回答

7

調試器開始與主線程,因爲你的斷點是主線程。
t.start()產生一個新線程。
但調試器將繼續與主線程本身。

如果要調試新創建的線程,則還必須在run()方法中設置斷點。然後調試器控件轉到新創建的線程,但它對用戶不可見。

如果你想看到的控制,新創建的線程的run()方法,那麼你必須遵循以下步驟 -

  1. 將斷點在run()方法與main()方法一起。
  2. 開始調試程序,直到你打的聲明t.start()
  3. 完成t.start()後,轉至「調試」視圖。你會發現有2個線程運行(您可以通過找到Eclipse中的「調試」視圖「窗口 - >顯示視圖 - >調試」)。
    • 第一種是主線程
    • 第二個是新創建的線程(例如,[線程-1])
  4. 點擊所述第二線程上看到在運行方法的控制。
  5. 你的線程執行完成後,轉到「調試」視圖中再次,然後單擊主線程上繼續與主線程調試。

注:如果繼續朝線程結束第3步後,主線程,那麼你將不能夠調試你的新線程。