Cr on表达式是用来描述定时任务执行时间的字符串,它由6个部分组成,分别表示秒、分钟、小时、日、月、周几。普通的 Cr on表达式支持简单的时间设置,如每5分钟执行一次任务。但是有时候需要更加复杂的时间设置,比如每周的周一、周三、周五,在上午10点到下午3点之间执行任务。这时就需要使用 Cr on表达式的高级语法来实现。
以下是一个使用Quartz框架的Java示例代码,通过 Cr on表达式配置定时任务,并设置复杂执行时间:
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
public class CronComplexExample {
public static void main(String[] args) throws SchedulerException {
// 创建Scheduler工厂实例
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
// 从工厂中获取Scheduler实例
Scheduler scheduler = schedulerFactory.getScheduler();
// 定义JobDetail
JobDetail jobDetail = JobBuilder.newJob(HelloJob.class)
.withIdentity("helloJob","group1")
.build();
// 定义Trigger开始时间
long startTime = System.currentTimeMillis();
startTime += 10000; // 延迟10秒开始
// 定义Cron表达式,每周一、周三、周五的上午10点到下午3点之间执行
String cronExpression = "0 0 10,11,12,13,14,15 ? * MON,WED,FRI *";
// 构建触发器Trigger
CronTrigger trigger = TriggerBuilder.newTrigger()
.withIdentity("cronTrigger","group1")
.startAt(new Date(startTime))
.withSchedule(CronScheduleBuilder.cronSchedule(cronExpression))
.build();
// 将JobDetail和Trigger注册到Scheduler中
scheduler.scheduleJob(jobDetail, trigger);
// 启动Scheduler
scheduler.start();
public static
周六逛B乎的时候正好刷到这样一个 问题 **"Java开发手册(黄山版)怎么样?"**,我仔细一看这不是孤尽老师的著作吗?居然已经更新到了黄山版。上次看这本小册子的时候还是上次——19年的时候我看的华山版的。再往前那就是17年的第一版了,当时是在阿里的公众号下载的,后来还买了实体的《Java开发手册》和《码出高效》两本书。其实这本小册子并不是什么深度的内容,但是却让我受益匪浅——你写不出 复杂 高深的代码,但是至少能写出规范、...
它以 Cron表达式的 形式定义了任务的运行频率。**如此多的任务如何精确运行呢, 时间 轮算法就是一个很好的解法。** 时间 轮算法的核心是: **轮询时不再遍历所有任务,而是仅仅遍历 时间 刻度。** 好比指针不断在时钟上旋转,如果发现某一时刻上有任务,那么就会执行该任务。显而易见, 时间 轮算法解决了遍历效率低的 问题 。 如果以小时为单位,有 10w 个任务,我们不需要遍历所有任务,仅仅需要遍历 24 个 时间 刻度。...
它以 Cron表达式的 形式定义了任务的运行频率。如此多的任务如何精确运行呢, 时间 轮算法就是一个很好的解法。 时间 轮算法的核心是:轮询时不再遍历所有任务,而是仅仅遍历 时间 刻度。好比指针不断在时钟上旋转,如果发现某一时刻上有任务,那么就会执行该任务。显而易见, 时间 轮算法解决了遍历效率低的 问题 。如果以小时为单位,有 10w 个任务,我们不需要遍历所有任务,仅仅需要遍历 24 个 时间 刻度。 param... parameter String cron 执行参数 description String test 任务描述 job_state Int64 1 任务状态 cron _type Int32 1 调度类型 全局调度为1 单点调度为2 create_time Int64 1638326159 创建 时间 update_time I...
请求参数名称 位置 类型 是否必填 示例值 描述 Action Query String 是 CreateCronJob 要执行的操作。取值:CreateCronJob domain Body String 是 test-sparrow.test.test 函数域名 job_name Body String 是 cron 1 任务名称。名称需同时满足如下要求: 每个函数的任务名不能有重复 长度不超过128个字符 cron _expression Body String 是 */1 * * * * 执行 表达式 。名称需同时满足如下要求: 支持 cron表达式 (不支持秒级触发) para...
本接口用于获取触发任务的调度记录。 请求参数名称 位置 类型 是否必填 示例值 描述 Action Query String 是 ListCronJobTask 要执行的操作。取值:ListCronJobTask domain Query String 是 test-sparrow.test.test 函数域名 job_name Body String 是 cron 1 任务名称。名称需同时满足如下要求: 每个函数的任务名不能有重复 长度不超过128个字符 search_type Query String 否 cron _expression 搜索类型执行 表达式 ( cron _expressi...
2为升序(默认按照create_time的升序排列) 返回数据名称 类型 示例值 描述 jobs []Job 见下文说明 任务列表 total_count Int64 1 任务总数 Job 名称 类型 示例值 描述 job_name String cron 1 任务名称。名称需同时满足如下要求: 每个函数的任务名不能有重复 长度不超过128个字符 cron _expression String */1 * * * * 执行 表达式 。名称需同时满足如下要求: 支持 cron表达式 (不支持秒级触发) parameter String cron 执行参数 des...
CronJob 要执行的操作。取值:UpdateCronJob domain Body String 是 test-sparrow.test.test 函数域名 job_name Body String 是 cron 1 任务名称。名称需同时满足如下要求: 每个函数的任务名不能有重复 长度不超过128个字符 cron _expression Body String 是 */1 * * * * 执行 表达式 。名称需同时满足如下要求: 支持 cron表达式 (不支持秒级触发) parameter Body String 否 cron 执行参数 description Body String 否 test 任务描述...
2为升序(默认按照create_time的升序排列) 返回数据名称 类型 示例值 描述 logs []TaskLog 见下文说明 调度日志列表 total_count Int64 1 调度日志总数 TaskLog 名称 类型 示例值 描述 job_name String cron 1 任务名称。名称需同时满足如下要求: 每个函数的任务名不能有重复 长度不超过128个字符 cron _expression String */1 * * * * 执行 表达式 。 支持 cron表达式 (不支持秒级触发) parameter String cron 执行参数 cluster_na...