假设我有一个任务,它将判断是否满足某个条件.如果满足了那个条件,我应该提前终止任务.但是,我应该继续运行该任务N分钟,同时不断判断是否满足该条件.在N分钟结束时,任务应自行终止.

我一直在研究Timer、TimerTask和ExecutorService,但它们似乎都不能提供我正在寻找的解决方案类型.例如,这些方法将允许您计划任务运行一次或重复运行,但不是在特定的时间量(也就是N分钟)内运行.

推荐答案

ScheduledExecutorService可以做到这一点.

您需要做的是:

  • 以固定的时间间隔(以时间单位,如秒、分钟、小时等)计划您要完成的工作块
  • 当你完成工作后,执行ScheduledExecutorService#shutdownNow
  • 要在一段时间后超时,请使用ScheduledExecutorService#awaitTermination将计划任务的终止延迟到您的阈值过期

Java相关问答推荐

如何将kotlin代码转换为java

JVM会优化这个数学运算吗?

Java Swing:初始化身份验证类后未检测到ATM_Interface键事件

获取字符串中带空格的数字和Java中的字符

为什么我的在一个范围内寻找素数的程序不能像S所期望的那样工作

为什么使用JDK21获取锁定锁比使用JDK11慢

在JDK 1.8源代码中,为什么使用A-B 0来确定哪个更大,而不是A B?

Java Mooc.fi Part 12_01.Hideout -返回和删除方法

使用多个RemoteDatabase对象的一个线程

如何在JavaFX循环中完美地制作一个AudioClip/MediaPlayer?

如何在我的世界中为互动增加冷却时间?

Java页面筛选器问题

从映射列表中检索所有键

如果第一位数字和最后一位数字相差超过一位,您将如何获得随机数?

如何根据配置动态创建N个bean

无法使用Java PreparedStatement在SQLite中的日期之间获取结果

Java中HashSet的搜索时间与TreeSet的搜索时间

JavaFX:无论何时显示应用程序,如何更改组件/ node 位置?

Java中的一个错误';s stdlib SocksSocketImpl?

如何组合Mono和Flux