linux系统调度程序设计,Quartz实现任务调度

Quartz框架核心概念

Quartz对任务调度进行了高度抽象,提出了3个核心概念,并在org.quartz包中通过接口和类进行了描述。

任务:就是执行的工作内容。Quartz提供Job接口来支持任务定义

触发器:定义触发Job执行的时间触发规则。Quartz提供Trigger类及其子类支持触发器功能,

调度器:Quartz提供了Scheduler接口,将工作任务和触发器绑定,保证任务可以在正确的时间执行

Quartz框架的使用流程

在系统中,对员工张三的工作任务进行提醒,实现每3秒钟进行一次任务提醒,定时器在10秒钟后关闭。

28c4b3ee6cf7b4b749fefbf75244d2a1.png

案例流程如下:

1.引入jar包

08eb70c3fff67db71e8659188ececada.png

2.创建实体类

48decd34b5c5cba66b3bc715ae37f57e.png

3.创建service

public classRemindService {//创建集合,书写内容

public ListgetPlayToday(){

List list=new ArrayList();

Plan plan1=new Plan("12月17日", "快回家了!!!");

Plan plan2=new Plan("12月18日", "这是真的!!!");

list.add(plan1);

list.add(plan2);returnlist;

}//打印计划的时间与内容

public voidplintMessage(){

List list=getPlayToday();for(Plan plan : list) {

System.out.println("计划的时间:"+plan.getDate()+"计划的内容:"+plan.getTask());

}

}

}

4.创建quartz

public class RemindJob implementsJob {//植入service

private RemindService service = newRemindService();

@Overridepublic void execute(JobExecutionContext arg0) throwsJobExecutionException {

service.plintMessage();

}publicRemindService getService() {returnservice;

}public voidsetService(RemindService service) {this.service =service;

}

}

5.测试类:

public classMyQuertzTest {public static void tool() throwsException{//创建job

JobDetail job = JobBuilder.newJob(RemindJob.class)// .withIdentity("job1", "group1").build();//构建trigger

/*CronTrigger trigger = TriggerBuilder.newTrigger().//

withIdentity("trigger1", "group1").//

withSchedule(CronScheduleBuilder.cronSchedule("0 40 18 ? * 7#3 2016"))

.build();*/Trigger trigger=TriggerBuilder.newTrigger()

.withIdentity("myTrigger", "myTriggerGroup")

.withSchedule(SimpleScheduleBuilder.simpleSchedule()

.withIntervalInSeconds(60)

.repeatForever())

.startAt(newDate(System.currentTimeMillis()))

.build();//创建调度者工厂

SchedulerFactory sfc = newStdSchedulerFactory();//创建一个调度者

Scheduler sched=sfc.getScheduler();//注册并进行调度

sched.scheduleJob(job, trigger);

sched.start();//Thread.sleep(3000);

}public static voidmain(String[] args) {try{

tool();

}catch(Exception e) {

e.printStackTrace();

}

}

}

使用CronTrigger(特定时间,特定操作)

CronTrigger也是Trigger的子类

CronTrigger和SimpleTrigger的对比:

1a840a0cf262964539ff94aba90e68a3.png

CronTrigger允许用户更精准地控制任务的运行日期和时间,而不仅仅是定义工作的频度

CronTrigger通过Cron表达式定义准确的运行时间点。创建CronTrigger的语法如下:

f58ffa85df98e00b42aadc22d1b40b3c.png

Cron表达式

要使用CronTrigger,必须掌握Cron表达式

Cron表达式由6~7个由空格分隔的时间元素组成。第7个元素可选

79ec643c1ba098d8bc0d8fe746362584.png

Cron表达式有几个特殊的字符,说明如下:

034690bd156b2eb3926e2ada1e5405ea.png

Cron表达式案例:

c618560e7ea2e40fbabefddb90547162.png

64bd3de9db2faf543cf3841df7e5d2f1.png

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值