Java中的Cron Job第六个参数

Pri*_*iya 6 java cron crontab

我是Java的新手.作为我的第一个项目,我将使用cron作业调度程序.我想要一些关于日程安排的澄清.我有一个每小时运行一次的代码.

  CronTrigger ct = new CronTrigger("cronTrigger", "group2", "0 1/0 * * * ?"); 
Run Code Online (Sandbox Code Playgroud)

我已经阅读了有关日程安排的文件,但我感到困惑

在一份文件中,我已阅读如下所示

 ("0 0 * * * ?") 
Run Code Online (Sandbox Code Playgroud)
  • 第一个0表示秒
  • 第二个表示分钟
  • 第3个小时
  • 这个月的哪一天
  • 哪个月5日.

在一些文件中我读到第1个表示分钟2小时等.

任何人都可以解释一下这个(0 1/0***?)以及它意味着什么(1/0)?

我想每六个小时就找一份工作.

如果我这样给(0 */6 * * * ?)它是否会每六个小时运行一次?

fed*_*qui 6

如果你签入crontab.guru,这两个几乎是等价的:

*   * * * *
* 1/0 * * *
Run Code Online (Sandbox Code Playgroud)

这是因为X/Y意味着:从X每一个开始Y.也就是说,所有X + Yn.所以,如果你说它*/2会每2个小时做一次.

在这种情况下:1/0表示"从1开始,每小时",因此匹配从1到23,而*匹配从0到23.

根据您的问题,*/6每6小时匹配一次,因此它将在0,6,12和18小时精确运行.

关于你关于第6个参数?做什么的问题,我读到:

我相信这是由CronExpression类处理的,它有六个常量:分钟,小时,日,月,工作日,年.Cron使用分钟,小时,日,月,工作日.年度()方法的年份的添加似乎是额外*的原因.

所以不要使用通用语法

 +---------------- minute (0 - 59)
 |  +------------- hour (0 - 23)
 |  |  +---------- day of month (1 - 31)
 |  |  |  +------- month (1 - 12)
 |  |  |  |  +---- day of week (0 - 6) (Sunday=0 or 7)
 |  |  |  |  |
 *  *  *  *  *  command to be executed 
Run Code Online (Sandbox Code Playgroud)

有了Java,你就拥有了

   +----------------- minute (0 - 59)
   |  +-------------- hour (0 - 23)
   |  |  +----------- day of month (1 - 31)
   |  |  |  +-------- month (1 - 12)
   |  |  |  |  +----- day of week (0 - 6) (Sunday=0 or 7)
 # |  |  |  |  |  +-- year                       <-- this is extra !!
   |  |  |  |  |  |
   *  *  *  *  *  * command to be executed 
Run Code Online (Sandbox Code Playgroud)

最后一个参数也可以有一个值,但在您的情况下它指定?.至于我在crontab.guru中读到的内容,它意味着:

空白(非标准)

因此,我会使用5个常用参数正常安排它,然后?在最后添加,以便它在所有年份运行.