方案1: 修改qrtz_triggers 表的NEXT_FIRE_TIME 字段
// 入参是triggerName, triggerGroup,延迟8秒执行
public void executeJobNow(String triggerName, String triggerGroup) {
Map<String, Object> params = new HashMap<>();
params.put("interval", System.currentTimeMillis() + 8000); // 8秒
params.put("triggerName", triggerName);
params.put("triggerGroup", triggerGroup);
qrtzMapper.updateNextFireTime(params);
}
// 实际上是修改qrtz_triggers 表的NEXT_FIRE_TIME 字段
// 前提是java服务器和数据库时钟相等
<update id="updateNextFireTime" parameterType="java.util.Map">
update qrtz_triggers set NEXT_FIRE_TIME = #{interval}
where trigger_name = #{triggerName} and trigger_group = #{triggerGroup}
</update>
方案2: 直接调用task方法调用executeInternal方法
<