if语句上的计时器?

Timer on if statement?

我正在做一个检测物体的 Finch 机器人项目,在其中一种方法中,我必须做一个 if 语句,如果 Finch 在 5 秒内检测到一个物体,我是否需要一个计时器 class为此?请帮忙。 (Java 的新手)

如果 Finch 检测到一个物体 <= 5 秒,停止并将 LED 变为蓝色,否则等待 1 秒并继续朝随机方向移动(我已经这样做了)

编辑:到目前为止我的代码:

public static void ObjectEncountered() {

    while(true) {

        if(myfinch.isObstacle()== true){
            myfinch.setLED(0, 0, 255);
            myfinch.setWheelVelocities(0, 0); 
        }
        else {

            myfinch.setLED(0, 0, 0);
            random();


        }
    }

}

我们需要更多代码来回答。如果您检测对象的方法总是立即 returns,那么很容易保持循环,直到 System.currentTimeMillis() 显示的数字比开始时大 5000 以上。但是,如果您检测对象的方法直到检测到某物(可能是 20 秒后)才 return,那么您将需要一些异步编程才能在 5 秒时将 LED 变为蓝色。

该方法将涉及分离另一个线程来调用检测方法,然后等待它检测到某些东西或 5 秒过去。您可以使用 BlockingQueue 进行从一个线程到另一个线程的通信,因为这也提供了定时等待。如果您不关心 5 秒后检测到的对象,您可以让主线程中断检测线程,这将让它正常关闭。