2010-04-18 50 views
8

我有執行主線程產生新線程。在main()中執行的主線程中,我打電話給Thread.sleep()。何時可以得到未處理的異常類型InterruptedException睡眠從主線程正在拋出InterruptedException

我不確定爲什麼我得到這個。我認爲這是因爲我需要參考主線程,所以我繼續前進,並通過Thread.currentThread()進行了參考。

這不是讓線程睡眠的方法嗎?我需要做的是讓主線程等待/睡眠/延遲,直到它再次需要工作。

+0

任何代碼將不勝感激:)。 – 2010-04-18 18:41:58

+0

我所做的或已經完成的所有調用Thread.sleep(一定數量的毫秒)或使用Thread t = Thread.currentThread()對主線程(我認爲這就是它在做什麼)進行引用,然後調用t.sleep(一些毫秒)。這兩種情況都引發了InterruptedException。 – Chris 2010-04-18 18:46:39

回答

18

由於您沒有正確處理檢查的異常(在這種情況下爲InterruptedException),您所看到的是編譯錯誤。操縱裝置執行以下操作之一:

1)宣告所述方法throws InterruptedException,因此要求呼叫者來處理與一個try{..}catch(..){..}塊捕捉它的例外

2)。例如:

try { 
    Thread.sleep(1500); 
} catch(InterruptedException e) { 
    System.out.println("got interrupted!"); 
} 

InterruptedException用於指示,而這是執行一些阻塞操作當前線程已經通過外螺紋中斷(例如中斷IO,等待,休眠)

-2

Thread.sleep(t);

這就是你如何讓你的線程等待。其中t以毫秒爲單位。 它在我的主要方法中工作正常,所以要找出你的問題,如果你能在這裏提供你的代碼會更好。

0

在生產線,其中你定義的開始,只包括拋出異常。我也面臨類似的問題,這有助於。在這個包含之後,您不需要包含Thread.sleep(xx);裏面的try-catch語句