Java中如何在满足条件后才启动计时器

Java中如何在满足条件后才启动计时器,java,timer,Java,Timer,我正在比较两个值“a”和“b”。这些值通过API实时检索。 我想在“a”中的值在2秒后继续高于“b”时实施警报 这是我的密码 public class CheckValues extends TimerTask { if(a>b) { System.out.println("Value exceeded. Going to recheck in 2 seconds"); //I want to then re-check this condition after

我正在比较两个值“a”和“b”。这些值通过API实时检索。 我想在“a”中的值在2秒后继续高于“b”时实施警报

这是我的密码


public class CheckValues extends TimerTask {

  if(a>b)
{
System.out.println("Value exceeded. Going to recheck in 2 seconds");
//I want to then re-check this condition after 2 seconds by something as below. 'a' and 'b' continue to get updated.
 public void run() {
        // schedule for 2 seconds and recheck with latest values if a is still greater than b, then trigger an alert
    }
}
   
}

这不管用。如何重新执行检查的任何建议。我不想使用睡眠,因为我正在通过API实时使用这些数据,并且不想因为睡眠而错过更新。

要在后台重复运行任务,请使用Executors框架。
Timer
/
TimerTask
类在几年前被executor服务类取代

定义一个
Runnable
类,该类包含一个
Instant
成员字段。
run
方法检查两个值是否相等。如果相等,则使用
instant.now()
设置瞬间。如果不相等,则通过设置为null或某些标记值(如
instant.EPOCH
)清除该瞬间。如果相等,并且已经设置了瞬间,请与当前瞬间进行比较,查看是否已过两秒:
Duration.between(然后是instant.now()).toSeconds()>2

将此
Runnable
的实例提交到
ScheduledExecutorService
以重复运行。指定要执行可运行对象的
run
方法的频率


所有这些部件都已多次覆盖在堆栈溢出上。搜索以了解更多信息。

这甚至不是有效的Java语法。你必须在课堂之外检查这种情况,并在课堂上安排复查。在这种情况下,我如何安排复查?我不需要延长上课时间吗?很抱歉提出这些问题,但不确定如何在上述课程之外重新安排。例如,如果我使用一个函数,在该函数中调用相同的条件,如何重新检查?