All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.xiaoleilu.hutool.cron.CronUtil Maven / Gradle / Ivy


package com.xiaoleilu.hutool.cron;

import com.xiaoleilu.hutool.cron.task.Task;
import com.xiaoleilu.hutool.exceptions.UtilException;
import com.xiaoleilu.hutool.setting.Setting;
import com.xiaoleilu.hutool.setting.SettingRuntimeException;

/**
 * 定时任务工具类
* 此工具持有一个全局{@link Scheduler},所有定时任务在同一个调度器中执行 * * @author xiaoleilu * */ public final class CronUtil { // private final static Log log = StaticLog.get(); /** Crontab配置文件 */ public final static String CRONTAB_CONFIG_PATH = "config/cron.setting"; private final static Scheduler scheduler = new Scheduler(); private static Setting crontabSetting; private CronUtil() { } /** * 自定义定时任务配置文件 * * @param cronSetting 定时任务配置文件 */ public static void setCronSetting(Setting cronSetting) { crontabSetting = cronSetting; } /** * 自定义定时任务配置文件路径 * * @param cronSettingPath 定时任务配置文件路径(相对绝对都可) */ public static void setCronSetting(String cronSettingPath) { try { crontabSetting = new Setting(cronSettingPath, Setting.DEFAULT_CHARSET, false); } catch (SettingRuntimeException e) { // ignore setting file parse error } } /** * 设置是否支持秒匹配,默认不使用 * * @param isMatchSecond true支持,false不支持 */ public static void setMatchSecond(boolean isMatchSecond) { scheduler.setMatchSecond(isMatchSecond); } /** * 设置是否支持年匹配,默认不使用 * * @param isMatchYear true支持,false不支持 */ public static void setMatchYear(boolean isMatchYear) { scheduler.setMatchYear(isMatchYear); } /** * 加入定时任务 * * @param schedulingPattern 定时任务执行时间的crontab表达式 * @param task 任务 * @return 定时任务ID */ public static String schedule(String schedulingPattern, Task task) { return scheduler.schedule(schedulingPattern, task); } /** * 加入定时任务 * * @param id 定时任务ID * @param schedulingPattern 定时任务执行时间的crontab表达式 * @param task 任务 * @return 定时任务ID * @since 3.3.0 */ public static String schedule(String id, String schedulingPattern, Task task) { scheduler.schedule(id, schedulingPattern, task); return id; } /** * 加入定时任务 * * @param schedulingPattern 定时任务执行时间的crontab表达式 * @param task 任务 * @return 定时任务ID */ public static String schedule(String schedulingPattern, Runnable task) { return scheduler.schedule(schedulingPattern, task); } /** * 批量加入配置文件中的定时任务 * * @param cronSetting 定时任务设置文件 */ public static void schedule(Setting cronSetting) { scheduler.schedule(cronSetting); } /** * 移除任务 * * @param schedulerId 任务ID */ public static void remove(String schedulerId) { scheduler.deschedule(schedulerId); } /** * @return 获得cron4j的Scheduler对象 */ public static Scheduler getScheduler() { return scheduler; } /** * 开始 */ synchronized public static void start() { if (null == crontabSetting) { setCronSetting(CRONTAB_CONFIG_PATH); } if (scheduler.isStarted()) { throw new UtilException("Scheduler has been started, please stop it first!"); } schedule(crontabSetting); scheduler.start(); } /** * 重新启动定时任务
* 重新启动定时任务会清除动态加载的任务 */ synchronized public static void restart() { if (null != crontabSetting) { crontabSetting.load(); } if (scheduler.isStarted()) { scheduler.stop(); } schedule(crontabSetting); scheduler.start(); } /** * 停止 */ synchronized public static void stop() { scheduler.stop(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy