我有一個問題,的Java聽插槽,同時檢查時間
我的客戶需要從特定的時間量的服務器聽,如果它沒有在那個時候接收來自服務器的回覆它有關閉連接。
我在客戶端有兩個線程,一個在時間過期後將布爾變量更新爲false,另一個線程從服務器以及計時器檢查msg。
我的代碼是這樣的:
while(true){
if(l=is.readLine().equals(msg))
{
// do processing
break;
}
if(timer)
break;
}
所以我while循環continuoslu檢查味精和定時器。 問題是,.readline()阻塞了這個調用,並且正在無限期地等待來自服務器的消息。
我該如何去做。
我試圖
if(l=is.readLine()!=null and l.equals(msg))
,但沒有工作。
所以我必須有另一個線程除了監聽器和定時器?無論如何,我可以檢查在同一個線程中的兩個條件? – 2013-04-25 07:39:05
你可以把定時器放在你的主線程中 - 只要確保它不佔用CPU。服務器連接進入它自己的線程,因此如果需要它可以被終止。 – Zyerah 2013-04-25 07:39:58
即使我有我的計時器在主線程,我需要2個線程onr切換如果我收到一個味精和其他檢查哪一個滿意(收到味精或定時器過期)ryt? – 2013-04-25 07:43:09