Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-带计时器的用户输入线程_Java_Multithreading_String_Timer_User Input - Fatal编程技术网

Java-带计时器的用户输入线程

Java-带计时器的用户输入线程,java,multithreading,string,timer,user-input,Java,Multithreading,String,Timer,User Input,在这个网站上看到了许多类似的问题,我想说,在评论这篇文章之前,没有一个问题得到了完全的回答 这是一个简单的问题,我必须使用计时器30秒,然后检索用户输入(字符串),如下所示 while (timer is still less than 30 seconds) allow user to enter input (using either scanner, buffered reader) 我知道线程将是必需的,但不确定如何实现这一点,而且似乎比我最初设定的要复杂得多 谢谢尝试执行

在这个网站上看到了许多类似的问题,我想说,在评论这篇文章之前,没有一个问题得到了完全的回答

这是一个简单的问题,我必须使用计时器30秒,然后检索用户输入(字符串),如下所示

while (timer is still less than 30 seconds)
      allow user to enter input (using either scanner, buffered reader)
我知道线程将是必需的,但不确定如何实现这一点,而且似乎比我最初设定的要复杂得多

谢谢

尝试执行以下操作(无线程连接;):

long startTime=System.currentTimeMillis();
时间久了;
做{
//获取用户输入
.
.
//过程输入
.
.
//检查经过的时间
已用时间=(System.currentTimeMillis()-startTime)/1000;
}而(经过的时间<30);

请记住,我假设获取用户输入是阻塞的。(否则while循环将阻塞cpu,我建议将其设置为100毫秒的睡眠语句)

这是一个好建议,但这不会导致它在用户输入时停止,等待用户输入任何时间。这就是为什么必须使用Think tdreading的原因……现在我明白你的意思了。看这里:。第一个答案会解决你的问题。通常,执行任务(在本例中是获取用户输入)时会有预定义的超时。
long startTime = System.currentTimeMillis();
long timeElapsed;
do {
    // Get user input
    .
    .


    // Process input
    .
    .

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

} while (timeElapsed < 30);