建设网站买的空间是服务器吗,三亚网上商城,html网页基本结构,手机地图软件哪个最好用为什么80%的码农都做不了架构师#xff1f; Quartz2 说白了#xff0c;就是个功能比较完善的定时器#xff0c;可以通过指定的时间执行指定的任务。 应用范围 a.比如让商城的活动#xff08;对象#xff09;在指定的时间#xff08;定时#xff0… 为什么80%的码农都做不了架构师 Quartz2 说白了就是个功能比较完善的定时器可以通过指定的时间执行指定的任务。 应用范围 a.比如让商城的活动对象在指定的时间定时从发布变为激活 b.比如平台每天200去给用户发送通知。 c.本来指定商城每天200发通知但是碰到了星期天触发器改为100发通知 定时器的应用范围其实很广上面只是简单举了几个例子。 准备 资源下载地址http://www.quartz-scheduler.org/ dependencygroupIdorg.quartz-scheduler/groupIdartifactIdquartz/artifactIdversion2.2.1/version/dependencydependencygroupIdorg.quartz-scheduler/groupIdartifactIdquartz-jobs/artifactIdversion2.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、工厂模式组装各个组件JOBTrigger --- 表示创建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********** ************************************************************************************************** 转载于:https://my.oschina.net/gxiao/blog/551168