是否可以为方法内的代码块运行cron作业?

问题描述

我有一种方法,我想运行一个cron作业,或者一个与cron作业足够类似的东西(但不是ThreadTaskTimer或类似的方法)就我而言,更多资源)仅用于该方法的一小部分。

  @Override
  public void notifyUsers(Data data) {
    // do some stuff with data
    
    // want a cron job here
    doImportantStuff(data);
  }

通常,我可以将.xml文件设置为具有整个方法来独立运行任务并弄清所有内容,但是,此方法相关,正在处理其他一些数据由另一个外部服务提供,因此很遗憾依赖为我提供所需的信息,由于我们的工作方式和组织方式,我无法在当前服务中获取这些数据。数据之类的。

此外,将在doImportantStuff()中完成的工作基本上将迭代对象的列表,每个对象都有其自己要执行的时间的列表(但是仅执行一次)。因此,例如,data.list [0]将在30和45分钟内执行(每次,一次,整个生命周期,因此总共执行2次),其中data.list [1]将在15、30分钟内执行,以及60分钟(共执行3次)。对于可变数量的数据,这些时间也将是可变时间。 (对我来说,使用线程更有意义,但是就像我说的那样,我不能)。

我想知道,对于方法内部的代码块,我是否可以执行cron或类似或“小的”足够的cron来在后台运行?

我本来打算创建一个新的Thread并让该线程doImportantStuff()然后休眠X倍的时间,但是经过进一步的研究,我意识到,由于,从理论上讲,可能有数百个对该方法的其他调用,然后每个调用都创建自己的线程。

很明显,我不是这个特定问题的专家,如果我对这个问题的理解是错误的,那么抱歉。

解决方法

我想您也可以在Java中使用Spring Schedule。因为在Spring中具有这种功能。简单又有用

@Scheduled(cron = "0 15 10 15 * ?")
public void scheduledMethod(){
    //code..
}

您可以找到更多信息here

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...