如何解决是否可以为方法内的代码块运行cron作业?
我有一种方法,我想运行一个cron作业,或者一个与cron作业足够类似的东西(但不是Thread
,TaskTimer
或类似的方法)就我而言,更多资源)仅用于该方法的一小部分。
@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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。