2012-04-01 89 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