Java中如何在满足条件后才启动计时器
我正在比较两个值“a”和“b”。这些值通过API实时检索。 我想在“a”中的值在2秒后继续高于“b”时实施警报 这是我的密码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
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语法。你必须在课堂之外检查这种情况,并在课堂上安排复查。在这种情况下,我如何安排复查?我不需要延长上课时间吗?很抱歉提出这些问题,但不确定如何在上述课程之外重新安排。例如,如果我使用一个函数,在该函数中调用相同的条件,如何重新检查?