【问题标题】:Executing a task at particular time interval [duplicate]在特定时间间隔执行任务[重复]
【发布时间】:2015-12-14 09:23:09
【问题描述】:

我想在java 中安排一个每 2 分钟运行一次的任务。即使之前的任务尚未完成,该任务也应该每 2 分钟运行一次。 (即下一个任务与上一个未完成的任务并行执行。) 有没有办法在 java 或 spring 中做到这一点?

【问题讨论】:

  • 您可以使用 TimerTask。 Quartz 调度器也是一个选项。 ScheduledThreadPoolExecutor 不是一个选项,因为即使上一个任务尚未完成,您也希望下一个任务运行。
  • 感谢您的建议

标签: java multithreading spring jakarta-ee executorservice


【解决方案1】:

您可以为此使用Quartz Scheduler。它允许您根据CRON 表达式安排任务以间隔(以毫秒为单位)或在预定义的日期和时间(只要指定)运行。

您可以在此处找到相关文档: https://quartz-scheduler.org/documentation

如果Quartz 不是一个选项,那么在java-source.net 上的“Java 中的开源作业调度程序”上有一个长而全面的替代列表:

http://java-source.net/open-source/job-schedulers

【讨论】:

  • 感谢您的建议
  • @user4325796 不客气 - 希望对你有用
【解决方案2】:

听起来你在找ScheduledExecutorService

一个 ExecutorService 可以安排命令在给定延迟后运行,或定期执行。

schedule 方法创建具有各种延迟的任务并返回一个可用于取消或检查执行的任务对象。 scheduleAtFixedRate 和 scheduleWithFixedDelay 方法创建并执行定期运行直到取消的任务。

【讨论】:

  • 嗨,scheduleAtFixedRate java doc 本身说下一个任务可能会根据前一个任务的执行而延迟,但两者都不能以并发方式运行。
猜你喜欢
  • 2014-07-24
  • 2018-03-11
  • 2012-11-18
  • 2011-09-25
  • 2010-11-05
  • 2014-02-15
  • 1970-01-01
  • 1970-01-01
  • 2012-02-21
相关资源
最近更新 更多