初识Quartz(入门案例)+常用的Cron表达式
1.Quartz架构图
1.实体层
package cn.happy.entity;
//1.
public class Plan {
//时间
private String date; //任务
private String task; public Plan(String date, String task) {
this.date = date;
this.task = task;
} public Plan() {
} @Override
public String toString() {
return "Plan [date=" + date + ", task=" + task + "]";
} public String getDate() {
return date;
} public void setDate(String date) {
this.date = date;
} public String getTask() {
return task;
} public void setTask(String task) {
this.task = task;
} }
Plan实体类
2.服务层
package cn.happy.service; import java.util.ArrayList;
import java.util.List;
//2.
import cn.happy.entity.Plan; public class RemindService {
//0.2用来打印集合中提醒内容的方法
public void printMessage(){
List<Plan> list=getPlasnForToday();
for(Plan plan : list){
//单个的plan
System.out.println("计划的时间"+plan.getDate()+"\t计划内容:"+plan.getTask());
}
} //创建一个集合,并且方法返回值是一个集合类型
public List<Plan> getPlasnForToday(){
List<Plan> list=new ArrayList<Plan>();
Plan plan1=new Plan("2016年12月17日","月底可以买回家的车票!");
Plan plan2=new Plan("2016年12月19日","webservice");
list.add(plan2);
list.add(plan1);
return list;
} }
RemindService
3.任务类的定义RemindJob implements Job
package cn.happy.quartz; import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException; import cn.happy.service.RemindService; //让一个普通类变成计划
public class RemindJob implements Job{
//植入service 对象
private RemindService service=new RemindService();
@Override
public void execute(JobExecutionContext context)throws JobExecutionException{
service.printMessage(); } public RemindService getService() {
return service;
} public void setService(RemindService service) {
this.service = service;
}
}
RemindJob
3.在Test类中综合咱们的计划和触发器
调度器≈Job+trigger
package cn.happy.test; import java.util.Date; import org.quartz.CronScheduleBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory; import cn.happy.quartz.RemindJob; public class MyQuertzTest {
public static void tool() throws SchedulerException,InterruptedException{
//第一步构建Job
JobDetail job=JobBuilder.newJob(RemindJob.class)//
.withIdentity("job1","group1")//
.build(); //第二步构建Trigger
/*Date runTime=DateBuilder.evenMinuteDate(new Date(System.currentTimeMillis()));
Trigger trigger=TriggerBuilder.newTrigger().withIdentity("trigger1","group1")//
.startAt(runTime).build();//系统当前时间的下一分钟打印一次*/ /*Trigger trigger=TriggerBuilder.newTrigger()//
.withIdentity("myTrigger","myTriggerGroup")//
.withSchedule(CronScheduleBuilder.cronSchedule("0 01 09 ? * 1#3 2016")).build();*/ /*//在系统时间一分钟后打印一次
Trigger trigger=TriggerBuilder.newTrigger()//
.withIdentity(TriggerKey.triggerKey("myTrigger","myTriggerGroup"))//
.withSchedule(SimpleScheduleBuilder.simpleSchedule()//
.withIntervalInMinutes(1)
.repeatForever())//
.startAt(new Date(System.currentTimeMillis()+2000))//
.build();*/ /*//1.3系统当前时间开始每两秒钟打印一次
Trigger trigger=TriggerBuilder.newTrigger()//
.withIdentity(TriggerKey.triggerKey("myTrigger","myTriggerGroup"))//
.withSchedule(SimpleScheduleBuilder.simpleSchedule()//
.withIntervalInSeconds(2)//2秒出现一次
.repeatForever()//
)//
.startAt(new Date(System.currentTimeMillis()))//
.build();*/ /*Trigger trigger=TriggerBuilder.newTrigger()//
.withIdentity(TriggerKey.triggerKey("myTrigger","myTriggerGroup"))//
.withSchedule(SimpleScheduleBuilder.simpleSchedule()//
.withIntervalInSeconds(2)//2秒出现一次
)//
.startAt(new Date(System.currentTimeMillis()+2000))//
.build();*/ /*Trigger trigger=TriggerBuilder.newTrigger()//
.withIdentity(TriggerKey.triggerKey("myTrigger","myTriggerGroup"))//
.withSchedule(SimpleScheduleBuilder.simpleSchedule()//
.withIntervalInMilliseconds(2)//两毫秒出现一次
.repeatForever())//
.startAt(new Date(System.currentTimeMillis()+2000))//
.build();*/ /*//隔5秒打印一次
Trigger trigger=TriggerBuilder.newTrigger()//
.withIdentity("myTrigger","myTriggerGroup")//
.withSchedule(SimpleScheduleBuilder.simpleSchedule()//
.withIntervalInSeconds(5)//
.repeatForever())
.startAt(new Date())//
.build();*/ //隔5秒打印一次
Trigger trigger=TriggerBuilder.newTrigger()//
.withIdentity("myTrigger","myTriggerGroup")//
.withSchedule(CronScheduleBuilder.cronSchedule("0 0 10 ? * 6L"))//每月最后一个星期五10:00运行
.startAt(new Date())//
.build(); /*Trigger trigger=TriggerBuilder.newTrigger()//
.withIdentity(TriggerKey.triggerKey("myTrigger","myTriggerGroup"))//
.withSchedule(SimpleScheduleBuilder.simpleSchedule()//
.withIntervalInSeconds(2)//
)//
.startAt(new Date(System.currentTimeMillis()+2000))//
.build();//需要放开第三步中注释的两行 运行完毕后服务也停止了*/ //第三步绑定 Job 和 Trigger
SchedulerFactory sf=new StdSchedulerFactory();
Scheduler sched=sf.getScheduler();
sched.scheduleJob(job,trigger);
sched.start();
//Thread.sleep(3000);//睡眠3秒钟
//sched.shutdown();//停止
} public static void main(String[] args) throws SchedulerException ,InterruptedException{
tool();
System.out.println("aaaaaaaaa"); }
}
测试类
总结:常用的Cron表达式
初识Quartz(入门案例)+常用的Cron表达式的更多相关文章
- quartz定时任务中常用的cron表达式
一:定时cron的格式,一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素. 按顺序依次为: 1.秒(0~59) 2.分钟(0~59) 3.小时(0~23) 4.天(月(0~31,但是你需 ...
- JAVAEE——BOS物流项目13:Quartz入门案例、核心概念、cron 表达式的格式(了解)
1.quartz入门案例 本入门案例基于spring和quartz整合完成. 第一步:创建maven工程,导入spring和quartz相关依赖 第二步:创建任务类 第三步:在spring配置文件中配 ...
- Quartz.net配置文件实例及cron表达式详解
从XML文件创建作业 最新版本的quartz.net支持直接从xml文件创建作业,使用起来很方便.配置文件的格式可以参考下面的例子 <?xml version="1.0" e ...
- (2)Spring集成Quartz定时任务框架介绍和Cron表达式详解
在JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等.我们可以使用java.util.Timer结合java.util.TimerTask来完成这项工作,但 ...
- Spring集成Quartz定时任务框架介绍和Cron表达式详解
原文地址:http://www.cnblogs.com/obullxl/archive/2011/07/10/spring-quartz-cron-integration.html 在JavaEE系统 ...
- Quartz入门案例与介绍(与spring整合)
Quartz概述 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或 ...
- Spring_Spring集成Quartz定时任务框架介绍和Cron表达式详解
在JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等.我们可以使用java.util.Timer结合java.util.TimerTask来完成这项工作,但 ...
- Quartz中时间参数说明 即Cron表达式
Cron表达式 Quartz使用类似于Linux下的Cron表达式定义时间规则,Cron表达式由6或7个由空格分隔的时间字段组成,如表1所示: 表1 Cron表达式时间字段 位置 时间域名 允许值 允 ...
- Quartz(一):Cron表达式
正文 1. 表达式介绍 Cron:cron表达式用于配置cronTrigger的实例.cron表达式实际上是由七个子表达式组成.这些表达式之间用空格分隔. Cron格式:[秒] [分] [小时] [日 ...
随机推荐
- 从零开始学Python08作业源码:开发简单的FTP(仅供参考)
服务器端:server_server.py #!usr/bin/env python # -*- coding:utf-8 -*- # auther:Mr.chen # 描述: import sock ...
- Java--volatile关键字的作用与用法
volatile 关键字作用是,使系统中所有线程对该关键字修饰的变量共享可见,可以禁止线程的工作内存对volatile修饰的变量进行缓存. volatile 2个使用场景: 1.可见性:Java提供了 ...
- Atitit.ide eclipse编译速度慢的解决
Atitit.ide eclipse编译速度慢的解决 以为是jar的体积与数量,貌似无关.. Err java的数量,貌似无关 Java的数量,关系不大... 最终原因:show>>pro ...
- samba共享服务
方法一 1.安装samba:可以先检查下是否已经安装:rpm -qa | grep samba,没有的话自己安装下,这里介绍下基于RPM包的一种在线安装模式yumyum是一种快速安装模式,它会自动解决 ...
- 【新年呈献】高性能 Socket 组件 HP-Socket v3.1.2 正式发布
HP-Socket 是一套通用的高性能 Windows Socket 组件包,包含服务端组件(IOCP 模型)和客户端组件(Event Select 模型),广泛适用于 Windows 平台的 TCP ...
- PowerDesigner16 基本使用教程
一.基本概念 概念数据模型也称信息模型,它以实体-联系(Entity-RelationShip,简称E-R)理论为基础,并对这一理论进行了扩充. 它从用户的观点出发对信息进行建模,主要用于数据库的概念 ...
- CSS的::selection使用方法
请选择本页面文本看看:http://hovertree.com/h/bjaf/38hq6y9d.htm CSS改变默认文本选中的颜色的方法 一般情况下在网页里的文本我们用鼠标选中的时候都是蓝色的,这个 ...
- .NET 数据类型转换 方法
using Newtonsoft.Json;using Newtonsoft.Json.Converters;using System.Web.Script.Serialization; /// &l ...
- javascript中的this和e.target的深入研究
this 是javascript的一个关键字,当函数运行时在内部自动生成.this是会变化的,在不同的场合,代表的东西就不一样.简单点来说,this指调用这个函数的对象.当你使用this代表的当前ht ...
- SharePoint 2013 入门教程之创建页面布局及页面
在SharePoint的使用过程中,页面布局和页面时很重要的两个概念,主要用于数据个性化展示,下面,我们简单介绍一下SharePoint的页面布局和页面的个性化. 一. SharePoint页面模型概 ...