【问题标题】:How to implement timeout with Quartz?如何用 Quartz 实现超时?
【发布时间】:2010-08-24 14:32:45
【问题描述】:

我正在尝试找到使用石英实现超时的最佳方法,但我想知道这个框架是否已经包含一个类或接口来执行此操作。需要实现它的超时是因为我想知道这项工作已经工作了多长时间,并决定关闭工作。

【问题讨论】:

  • 嗨,谢谢你的提问,我真的没用过,因为我认为这个参数只是为了在一段时间后结束工作。我想知道这项工作需要多长时间才能避免无限循环
  • 好的,所以您正在寻找一种方法来跟踪调度程序的正常运行时间而不是超时。尝试查看听众的文档。我没有使用它们,但它们似乎是监控应用程序运行状态/时间的合乎逻辑的选择。

标签: java jakarta-ee quartz-scheduler


【解决方案1】:

因为 java 平台没有提供任何方法来停止线程,Quartz 也没有提供任何方法来停止在线程上执行的作业。

作业需要照顾好自己,因为 Quartz 不知道他们的 execute() 方法中有什么代码。

我建议在您的作业 execute() 方法的开头使用 System.currentTimeMillis() 来记录当前时间,然后每次通过您的作业的主循环再次使用它来获取当前时间。查看差异以查看您的最大时间是否已过,如果已过,请跳出主循环并退出 execute() 方法。

【讨论】:

  • 另见 InterruptableJob 接口。还有 JobListener 接口,它为您提供了一些工具,可以将一些简单的功能添加到满足您需求的框架中。
  • 但是如果工作是一次性的并且没有循环,我如何检查你说的?
猜你喜欢
  • 2015-08-21
  • 1970-01-01
  • 2011-07-12
  • 2015-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多