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表达式的更多相关文章

  1. quartz定时任务中常用的cron表达式

    一:定时cron的格式,一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素. 按顺序依次为: 1.秒(0~59) 2.分钟(0~59) 3.小时(0~23) 4.天(月(0~31,但是你需 ...

  2. JAVAEE——BOS物流项目13:Quartz入门案例、核心概念、cron 表达式的格式(了解)

    1.quartz入门案例 本入门案例基于spring和quartz整合完成. 第一步:创建maven工程,导入spring和quartz相关依赖 第二步:创建任务类 第三步:在spring配置文件中配 ...

  3. Quartz.net配置文件实例及cron表达式详解

    从XML文件创建作业 最新版本的quartz.net支持直接从xml文件创建作业,使用起来很方便.配置文件的格式可以参考下面的例子 <?xml version="1.0" e ...

  4. (2)Spring集成Quartz定时任务框架介绍和Cron表达式详解

    在JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等.我们可以使用java.util.Timer结合java.util.TimerTask来完成这项工作,但 ...

  5. Spring集成Quartz定时任务框架介绍和Cron表达式详解

    原文地址:http://www.cnblogs.com/obullxl/archive/2011/07/10/spring-quartz-cron-integration.html 在JavaEE系统 ...

  6. Quartz入门案例与介绍(与spring整合)

    Quartz概述 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或 ...

  7. Spring_Spring集成Quartz定时任务框架介绍和Cron表达式详解

    在JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等.我们可以使用java.util.Timer结合java.util.TimerTask来完成这项工作,但 ...

  8. Quartz中时间参数说明 即Cron表达式

    Cron表达式 Quartz使用类似于Linux下的Cron表达式定义时间规则,Cron表达式由6或7个由空格分隔的时间字段组成,如表1所示: 表1 Cron表达式时间字段 位置 时间域名 允许值 允 ...

  9. Quartz(一):Cron表达式

    正文 1. 表达式介绍 Cron:cron表达式用于配置cronTrigger的实例.cron表达式实际上是由七个子表达式组成.这些表达式之间用空格分隔. Cron格式:[秒] [分] [小时] [日 ...

随机推荐

  1. 从零开始学Python08作业源码:开发简单的FTP(仅供参考)

    服务器端:server_server.py #!usr/bin/env python # -*- coding:utf-8 -*- # auther:Mr.chen # 描述: import sock ...

  2. Java--volatile关键字的作用与用法

    volatile 关键字作用是,使系统中所有线程对该关键字修饰的变量共享可见,可以禁止线程的工作内存对volatile修饰的变量进行缓存. volatile 2个使用场景: 1.可见性:Java提供了 ...

  3. Atitit.ide eclipse编译速度慢的解决

    Atitit.ide eclipse编译速度慢的解决 以为是jar的体积与数量,貌似无关.. Err java的数量,貌似无关 Java的数量,关系不大... 最终原因:show>>pro ...

  4. samba共享服务

    方法一 1.安装samba:可以先检查下是否已经安装:rpm -qa | grep samba,没有的话自己安装下,这里介绍下基于RPM包的一种在线安装模式yumyum是一种快速安装模式,它会自动解决 ...

  5. 【新年呈献】高性能 Socket 组件 HP-Socket v3.1.2 正式发布

    HP-Socket 是一套通用的高性能 Windows Socket 组件包,包含服务端组件(IOCP 模型)和客户端组件(Event Select 模型),广泛适用于 Windows 平台的 TCP ...

  6. PowerDesigner16 基本使用教程

    一.基本概念 概念数据模型也称信息模型,它以实体-联系(Entity-RelationShip,简称E-R)理论为基础,并对这一理论进行了扩充. 它从用户的观点出发对信息进行建模,主要用于数据库的概念 ...

  7. CSS的::selection使用方法

    请选择本页面文本看看:http://hovertree.com/h/bjaf/38hq6y9d.htm CSS改变默认文本选中的颜色的方法 一般情况下在网页里的文本我们用鼠标选中的时候都是蓝色的,这个 ...

  8. .NET 数据类型转换 方法

    using Newtonsoft.Json;using Newtonsoft.Json.Converters;using System.Web.Script.Serialization; /// &l ...

  9. javascript中的this和e.target的深入研究

    this 是javascript的一个关键字,当函数运行时在内部自动生成.this是会变化的,在不同的场合,代表的东西就不一样.简单点来说,this指调用这个函数的对象.当你使用this代表的当前ht ...

  10. SharePoint 2013 入门教程之创建页面布局及页面

    在SharePoint的使用过程中,页面布局和页面时很重要的两个概念,主要用于数据个性化展示,下面,我们简单介绍一下SharePoint的页面布局和页面的个性化. 一. SharePoint页面模型概 ...