2011-12-28 70 views
3

我碰到有包含一方法的Java代碼來執行以下操作:爲了看看線程是否被打斷,睡覺的目的可能是什麼?

 
static boolean waitForSeconds(long seconds) { 
    try { 
     Thread.sleep(seconds * 1000); 
    } catch (InterruptedException ex) { 
     return false; 
    } 
    return true; 
} 

什麼可能是這樣做的目的是什麼?返回值用於確定計算是否應該繼續。對我來說,嘗試睡1秒,似乎很奇怪,唯一的目的是檢查線是否在那一秒中斷。

調用此方法的代碼是否嘗試完成與thread.isInterrupted()相同的操作?無論試圖做什麼,有沒有更好的方法?

對waitForSeconds的調用出現在另一個方法的頂部,而不是出現在循環內部,所以如果這段代碼確實打算等待一秒以達到某種目的,除了檢查中斷外,看起來好像它會是檢查錯誤的地方。將睡眠放在循環附近不是更好嗎?它在哪裏更清楚它在做什麼?

對於最後一個問題,請改爲回覆此:

Is it clearer to sleep near a function call in a loop or in the function call itself?

回答

3

目的是暫停。

檢查調用外部方法的代碼,試圖瞭解他們爲什麼要暫停。
他們可能想要保存CPU或網絡。

2

該方法的目的是使線程執行停止指定的秒數。 catch子句允許該方法與調用者通信線程被中斷,而不是時間段到期。

1

這個想法可能是在計算中引入暫停,但是如果暫停被中斷,那麼這意味着計算不應該繼續。沒有看到周圍的(調用)代碼,爲什麼需要暫停是不可能的。

0

我想他們想暫停至少x秒;如果由於某種原因線程無法長時間睡眠,他們會使用返回值再次調用方法

相關問題