2012-04-01 72 views
1

看到許多其他類似的問題,在這個網站上,我會說他們沒有得到充分的答覆之前,對這個職位的批評。Java - 用戶輸入threadin與計時器

它的一個簡單的問題,我必須使用一個計時器,30秒和retrive用戶輸入(串)像下面..

while (timer is still less than 30 seconds) 
     allow user to enter input (using either scanner, buffered reader) 

我知道線程將被要求,但不知道如何impleneted這個阿塔爾,似乎比我首先想到的要複雜得多。

感謝

回答

0

嘗試做以下(不附加任何線程;)):

long startTime = System.currentTimeMillis(); 
long timeElapsed; 
do { 
    // Get user input 
    . 
    . 


    // Process input 
    . 
    . 

    // Check time elapsed 
    timeElapsed = (System.currentTimeMillis() - startTime)/1000; 

} while (timeElapsed < 30); 

記住,我認爲讓用戶輸入阻塞。 (否則,while循環會嗆住我建議將睡眠聲明說成100ms的cpu)

+0

這是一個很好的建議,但這不會導致它僅僅停止用戶輸入,等待用戶輸入時間量這就是爲什麼一個思想tdreading將不得不使用... – LmC 2012-04-01 14:18:34

+1

現在我明白你在哪裏。看看這裏:http://stackoverflow.com/questions/2275443/how-to-timeout-a-thread。第一個答案將解決你的問題。一般來說,你執行一個任務(在你的情況下,它的用戶輸入),並具有預定義的超時時間。 – giorashc 2012-04-01 14:30:40