Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaSpring中每隔一个星期一和给定的时间安排任务_Java_Spring_Cron_Scheduled Tasks - Fatal编程技术网

如何在JavaSpring中每隔一个星期一和给定的时间安排任务

如何在JavaSpring中每隔一个星期一和给定的时间安排任务,java,spring,cron,scheduled-tasks,Java,Spring,Cron,Scheduled Tasks,有没有办法在春季安排一项任务,让它每隔一个星期一在给定的时间(比如午夜)运行一次?我知道使用cron在每周一午夜运行任务看起来像是0**MON,但对于我来说,如何处理“每一个其他的”周一变得有些模糊 需要明确的是:如果我在2021年6月6日星期日部署了我的应用程序,我希望任务在2021年6月7日、2021年6月21日、2021年7月5日午夜运行 像0**MON/2这样的东西有用吗?或者我应该采取不同的方法,也许使用不同于cron的东西 任何帮助都将不胜感激不,Cron在JAVA中没有这样的功能。

有没有办法在春季安排一项任务,让它每隔一个星期一在给定的时间(比如午夜)运行一次?我知道使用cron在每周一午夜运行任务看起来像是
0**MON
,但对于我来说,如何处理“每一个其他的”周一变得有些模糊

需要明确的是:如果我在2021年6月6日星期日部署了我的应用程序,我希望任务在2021年6月7日、2021年6月21日、2021年7月5日午夜运行

0**MON/2
这样的东西有用吗?或者我应该采取不同的方法,也许使用不同于cron的东西


任何帮助都将不胜感激

不,Cron在JAVA中没有这样的功能。它在linux和unix机器中有一些解决方法,但在JAVA中没有

但是,您可以通过使用每月的几周以编程方式实现它


    Calendar c = Calendar.getInstance();
       if(c.get(Calendar.WEEK_OF_MONTH) % 2 != 0) {
             //execute job
       } else {
             //not execute job just skip operation
       }
上述代码在一个月的所有奇数周内执行。假设一个月有5周,这将在该月的1、3和5周内运行,并将在下个月的第一周再次运行

如果您非常希望它一个月只运行两次,那么可以通过检查一个月的一周是否大于4来阻止它,并阻止它。(*我还没有检查,试试看)


谢谢你的回答,我很可能会用代码而不是cron表达式来完成,但是你发布的代码片段并不能满足我的要求-如果有一个月有5个星期一,我希望我的工作在该月的第一、第三、第五个星期一进行,然后在下一个月的第二、第四个星期一进行。是的,这就是问题所在,因为矿山将在第一个月的第一、第三和第五日运行,并将在下个月的第一日再次运行。祝你一切顺利

    Calendar c = Calendar.getInstance();
       if(c.get(Calendar.WEEK_OF_MONTH) % 2 != 0 && !c.get(Calendar.WEEK_OF_MONTH)>4) {
             //execute job
       } else {
             //not execute job just skip operation
       }