等待没有获得输入

时间:2015-05-03 21:34:09

标签: java processing

如果按“R”,数量应该增加1,但如果在程序“等待”时按“R”则不应检测输入。但是通过延迟和休眠,程序会跟踪输入并在延迟后进行输入。是否有任何功能需要等待而不能获得任何输入?

import java.util.concurrent.TimeUnit;
int amount;

void setup()
{
   size(200, 200);

}
void draw()
{ 
   background(#FEF4E9);
   fill(#FF0000);

if (key == 'r'){
  //delay(500);
   try{
       Thread.sleep(500);
}catch(InterruptedException e){
    System.out.println("got interrupted!");
}
  amount++;
  println("amount: "+amount);
}
}

1 个答案:

答案 0 :(得分:1)

Thread.sleep(500);只会阻塞线程500毫秒;它不会阻止线程接收键盘输入等OS消息。消息将简单地放在消息队列中,直到线程解除阻塞,此时它们将运行。如果您尝试在特定时间段内忽略用户输入,则需要自己跟踪时间并忽略该持续时间的输入。

long ignoreTime = System.currentTimeMillis() + 500;
...
if (System.currentTimeMillis() > ignoreTime) { // only process after 500 timeout
    doProcessingForR();
}