为什么80%的码农都做不了架构师?>>>   
Quartz2  
      说白了,就是个功能比较完善的定时器,可以通过指定的时间执行指定的任务。
应用范围
a.比如让商城的活动(对象)在指定的时间(定时)从发布变为激活
b.比如平台每天2:00去给用户发送通知。
c.本来指定商城每天2:00发通知,但是碰到了星期天(触发器)改为1:00发通知
定时器的应用范围其实很广,上面只是简单举了几个例子。
准备
资源下载地址:http://www.quartz-scheduler.org/
    <dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.2.1</version></dependency><dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz-jobs</artifactId><version>2.2.1</version></dependency>如上在pom.xml加入要引入的jar包
Quartz中的设计模式
-  Builder模式 -  所有关键组件都有Builder模式来构建 <Builder> 如:JobBuilder、TriggerBuilder 
 
-  
-  Factory模式 -  最终由Scheduler的来进行组合各种组件 <Factory> 如SchedulerFactory 
 
-  
-  Quartz项目中大量使用组件模式,插件式设计,可插拔,耦合性低,易扩展,开发者可自行定义自己的Job、Trigger等组件 
-  链式写法,Quartz中大量使用链式写法,与jQuery的写法有几分相似,实现也比较简单,如: -  $(this).addClass("divCurrColor").next(".divContent").css("display","block"); 
-  newTrigger().withIdentity( "trigger3", "group1").startAt( startTime) .withSchedule(simpleSchedule().withIntervalInSeconds(10).withRepeatCount(10)).build(); 
 
-  
框架核心分析
-  SchedulerFactory -- 调度程序工厂 -  ThreadExecutor / DefaultThreadExecutor -- 内部线程操作对象 
-  StdSchedulerFactory -- Quartz默认的SchedulerFactory 
-  DirectSchedulerFactory -- DirectSchedulerFactory是对SchedulerFactory的直接实现,通过它可以直接构建Scheduler、threadpool 等 
 
-  
-  JobExecutionContext -- JOB上下文,保存着Trigger、 JobDeaitl 等信息,JOB的execute方法传递的参数就是对象的实例 -  JobExecutionContextImpl 
 
-  
-  Scheduler -- 调度器 -  StdScheduler -- Quartz默认的Scheduler 
-  RemoteScheduler -- 带有RMI功能的Scheduler 
 
-  
-  JOB --任务对象 -  JobDetail -- 他是实现轮询的一个的回调类,可将参数封装成JobDataMap对象,Quartz将任务的作业状态保存在JobDetail中. 
-  JobDataMap -- JobDataMap用来报错由JobDetail传递过来的任务实例对象 
 
-  
-  Trigger -  SimpleTrigger <普通的Trigger> -- SimpleScheduleBuilder 
-  CronTrigger <带Cron Like 表达式的Trigger> -- CronScheduleBuilder 
-  CalendarIntervalTrigger <带日期触发的Trigger> -- CalendarIntervalScheduleBuilder 
-  DailyTimeIntervalTrigger <按天触发的Trigger> -- DailyTimeIntervalScheduleBuilder 
 
-  
-  ThreadPool -- 为Quartz运行任务时提供了一些线程 -  SimpleThreadPool --一个Quartz默认实现的简单线程池,它足够健壮,能够应对大部分常用场景 
 
-  
实现思想:
// 1、工厂模式 构建Scheduler的Factory,其中STD为Quartz默认的Factory  
//    开发者亦可自行实现自己的Factory;Job、Trigger等组件  SchedulerFactory sf = new StdSchedulerFactory();  // 2、通过SchedulerFactory构建Scheduler对象  Scheduler sched = sf.getScheduler();  // 3、org.quartz.DateBuilder.evenMinuteDate  -- 通过DateBuilder构建Date  Date runTime = evenMinuteDate( new Date());  // 4、org.quartz.JobBuilder.newJob <下一分钟> --通过JobBuilder构建Job  JobDetail job = newJob(HelloJob.class).withIdentity("job1","group1").build();  //这里指定的HelloJob.class是job1的实现// 5、通过TriggerBuilder进行构建Trigger  
Trigger trigger = newTrigger().withIdentity("trigger1","group1")  .startAt(runTime).build();  // 6、工厂模式,组装各个组件<JOB,Trigger> ---   表示创建sched.scheduleJob (job, trigger);  // 7、start   
sched.start();  try {  Thread.sleep(65L * 1000L);  
} catch (Exception e) {  
}  // 8、通过Scheduler销毁内置的Trigger和Job  
sched.shutdown(true);
一句话实现:
1、创建调度工厂(); //工厂模式
2、根据工厂取得调度器实例(); //工厂模式
3、Builder模式构建子组件<Job,Trigger> // builder模式, 如JobBuilder、TriggerBuilder、DateBuilder
4、通过调度器组装子组件 调度器.组装<子组件1,子组件2...> //工厂模式
5、调度器.start(); //工厂模式
**************************************************************************************************
********来源:http://blog.csdn.net/chenweitang123/article/details/37777399**********
**************************************************************************************************