首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
宝塔
V2EX  ›  程序员

quartz 定时器周期设定

  •  
  •   qian88199496 · 57 天前 · 863 次点击
    这是一个创建于 57 天前的主题,其中的信息可能已经有所发展或是发生改变。

    "* * * */7 * ?"
    请问这样是否是每七天执行一次呢?

    11 回复  |  直到 2019-09-25 16:23:47 +08:00
        1
    airfling   57 天前
    那你为啥不直接直接设置为每周几执行一次
        2
    qian88199496   57 天前
    @airfling #1 因为想在启动的时候直接运行啊,相隔一周执行一次
        3
    airfling   57 天前
    @qian88199496 那你这样写就是每次启动都会执行一遍,如果出现上线问题,重启什么的就是每次重启都执行,这样写是没问题,不过不利于分布式部署和突发情况
        4
    qian88199496   57 天前
    就是为了收集分布式部署, 服务器信息和应用信息,才想要这样设置
        5
    fuxinya   57 天前 via Android
    百度在线 cron 表达式
        6
    k9990009   57 天前
    你每天都跑,程序里判断要不要执行,不就好了
        7
    diyhi   57 天前
    这样?可以指定每周星期几
        8
    rancc   57 天前
    Expression Meaning
    "0 0 12 * * ?" Fire at 12pm (noon) every day
    "0 15 10 ? * *" Fire at 10:15am every day
    "0 15 10 * * ?" Fire at 10:15am every day
    "0 15 10 * * ? *" Fire at 10:15am every day
    "0 15 10 * * ? 2005" Fire at 10:15am every day during the year 2005
    "0 * 14 * * ?" Fire every minute starting at 2pm and ending at 2:59pm, every day
    "0 0/5 14 * * ?" Fire every 5 minutes starting at 2pm and ending at 2:55pm, every day
    "0 0/5 14,18 * * ?" Fire every 5 minutes starting at 2pm and ending at 2:55pm, AND fire every 5 minutes starting at 6pm and ending at 6:55pm, every day
    "0 0-5 14 * * ?" Fire every minute starting at 2pm and ending at 2:05pm, every day
    "0 10,44 14 ? 3 WED" Fire at 2:10pm and at 2:44pm every Wednesday in the month of March.
    "0 15 10 ? * MON-FRI" Fire at 10:15am every Monday, Tuesday, Wednesday, Thursday and Friday
    "0 15 10 15 * ?" Fire at 10:15am on the 15th day of every month
    "0 15 10 L * ?" Fire at 10:15am on the last day of every month
    "0 15 10 ? * 6L" Fire at 10:15am on the last Friday of every month
    "0 15 10 ? * 6L" Fire at 10:15am on the last Friday of every month
    "0 15 10 ? * 6L 2002-2005" Fire at 10:15am on every last Friday of every month during the years 2002, 2003, 2004 and 2005
    "0 15 10 ? * 6#3" Fire at 10:15am on the third Friday of every month

    Pay attention to the effects of '?' and '*' in the day-of-week and day-of-month fields!
        9
    rancc   57 天前
    接上条,所以需要指定时间。哪一分那一秒都要指定
        10
    zifangsky   56 天前
    你找一个在线 在线 Cron 表达式 的工具验证一下不就明白了吗?
    比如: http://cron.qqe2.com/
        11
    yesterdaysun   56 天前
    就像上面说的, 你必须指定时分秒, 否则就是一秒钟运行一次, 你可以写个测试看一下执行时间就知道了, 网上有些模拟器和 Quartz 的语法不太一样, 而且 Quartz 语法不同版本也不一样, 跑测试最直接了:

    ```java
    @Test
    public void test() throws ParseException {
    CronTrigger cronTrigger = new CronTrigger("test", "test", "* * * */7 * ?");

    Date nextFireTime = new Date();
    for (int i = 0; i < 10; i++) {
    nextFireTime = cronTrigger.getFireTimeAfter(nextFireTime);
    String result = DateFormatUtils.format(nextFireTime, "yyyy-MM-dd HH:mm:ss");
    System.out.println(result);
    }
    }
    ```
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3569 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 23ms · UTC 05:10 · PVG 13:10 · LAX 21:10 · JFK 00:10
    ♥ Do have faith in what you're doing.