码农终将翻身 2024-04-08 09:45 采纳率: 75%
浏览 21
已结题

java实时设置定时任务时间

前端 添加一个年月日日期 java后端要根据这个日期 去执行定时任务 每年执行一次的那种 比如之前是1.1号 现在修改为2.1 定时任务需要立马修改为2.1执行 而不是执行完上次 才去那2.1这个日期 我跟网上找了好多都是这种的

  • 写回答

4条回答 默认 最新

  • 檀越@新空间 2024-04-08 09:45
    关注

    上午好☀️☀️☀️️
    本答案参考ChatGPT-3.5

    针对此问题,建议通过以下步骤来实现实时设置定时任务时间:

    1. 前端:添加一个年月日日期的日期选择器,用户选择日期后,将该日期发送给后端。

    2. 后端:接收前端传来的日期参数,解析年月日信息。

    3. 后端:通过 Cron 表达式来实现定时任务的触发。

    4. 后端:通过计算出下一次要执行定时任务的时间,修改 Cron 表达式中的配置,修改定时任务的执行时间。

    5. 后端:重启定时任务,使修改的定时任务生效。

    修改定时任务的代码实现示例:

    // 获取定时任务对象
    CronTrigger cronTrigger = (CronTrigger) scheduler.getTrigger(triggerKey);
    
    // 构造新的 Cron 表达式
    CronExpression newCronExpression = new CronExpression("0 0 0 " + dayOfMonth + " " + month + " ?");
    
    // 设置新的 Cron 表达式
    cronTrigger.setCronExpression(newCronExpression);
    
    // 重新启动定时任务
    scheduler.rescheduleJob(triggerKey, cronTrigger);
    

    其中,month 和 dayOfMonth 分别为前端选择的月份和日期,0 0 0 表示定时任务的执行时间为凌晨零点,? 表示该字段不指定具体值。

    注意,修改定时任务的时间可能会导致任务的执行时间发生变化,因此需要根据具体情况来决定是否可以等待上一次任务执行完毕再进行下一次任务的执行。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 12月18日
  • 已采纳回答 12月10日
  • 创建了问题 4月8日