自定义HourlyCalender 能从每小中排除某些分钟
/**
* 自定义自己的Calendar --- 排除一个小时中的一些分钟
* @name HourlyCalendar.java
* @author vivi
* @time 2009-9-3 上午10:39:06
*/
public class HourlyCalendar extends BaseCalendar {
//Array of Integer from 0 to 59
private List excludedMinutes = new ArrayList();
public HourlyCalendar(){
super();
}
public HourlyCalendar(org.quartz.Calendar baseCalendar){
super(baseCalendar);
}
public List getExcludeMinutes() {
return excludedMinutes;
}
public boolean isMinuteExcluded(int minute){
Iterator iter = excludedMinutes.iterator();
while(iter.hasNext()){
Integer excludeMin = (Integer)iter.next();
if(minute == excludeMin.intValue()){
return true;
}
continue;
}
return false;
}
public void setMinutesExcluded(List minutes){
if(minutes == null){
return;
}
excludedMinutes.addAll(minutes);
}
public void setMinuteExcluded(int minute) {
if (isMinuteExcluded(minute)){
return;
}
excludedMinutes.add(new Integer(minute));
}
public boolean isTimeIncluded(long timeStamp) {
if (super.isTimeIncluded(timeStamp) == false){
return false;
}
Calendar cal = getJavaCalendar(timeStamp);
int minute = cal.get(Calendar.MINUTE);
return !(isMinuteExcluded(minute));
}
public long getNextIncludedTime(long timeStamp) {
// Call base calendar implementation first
long baseTime = super.getNextIncludedTime(timeStamp);
if ((baseTime > 0) && (baseTime > timeStamp))
timeStamp = baseTime;
// Get timestamp for 00:00:00
long newTimeStamp = buildHoliday(timeStamp);
Calendar cal = getJavaCalendar(newTimeStamp);
int minute = cal.get(Calendar.MINUTE);
if (isMinuteExcluded(minute) == false)
return timeStamp; // return the
// original value
while (isMinuteExcluded(minute) == true) {
cal.add(java.util.Calendar.MINUTE, 1);
}
return cal.getTime().getTime();
}
}
测试自定义Clendar
public class TestHourlyCalendar {
static Log logger = LogFactory.getLog(TestHourlyCalendar.class);
public static void main(String[] args) {
TestHourlyCalendar example = new TestHourlyCalendar();
example.startScheduler();
}
public void startScheduler() {
try {
// Create a default instance of the Scheduler
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.start();
// Using the NoOpJob, but could have been any
scheduleJob(scheduler, PrintInfoJob.class);
logger.info("Scheduler starting up...");
} catch (SchedulerException ex) {
logger.error(ex);
}
}
private void scheduleJob(Scheduler scheduler, Class jobClass) {
try {
// Create an instance of the Quartz AnnualCalendar
HourlyCalendar cal = new HourlyCalendar();
//cal.setMinuteExcluded(47);
cal.setMinuteExcluded(48);
//cal.setMinuteExcluded(49);
cal.setMinuteExcluded(50);
// Add Calendar to the Scheduler
scheduler.addCalendar("hourlyExample", cal, true, true);
Trigger trigger = TriggerUtils.makeImmediateTrigger("myTrigger", -1, 3000);
// Trigger will use Calendar to exclude firing times
trigger.setCalendarName("hourlyExample");
JobDetail jobDetail = new JobDetail(jobClass.getName(),
Scheduler.DEFAULT_GROUP, jobClass);
// Associate the trigger with the job in the scheduler
scheduler.scheduleJob(jobDetail, trigger);
} catch (SchedulerException ex) {
logger.error(ex);
}
}
}
分享到:
相关推荐
kratos定时任务-kratos-cron
定时任务--实现步骤、操作手册操作手册新增执行器AppName:自定义名称:自定义排序:自定义,不能重复注册方式:自动注册—应该为读取配置文件中的配置信息中的机
在数据库中实现定时任务-详解及实例.pdf
Java开发案例-springboot-11-定时任务入门-源代码+文档.rar Java开发案例-springboot-11-定时任务入门-源代码+文档.rar Java开发案例-springboot-11-定时任务入门-源代码+文档.rarJava开发案例-springboot-11-定时...
C#实现的自定义定时任务 可定时运行 多任务运行
定时启动任务--跟随web容器启动,定时启动任务--跟随web容器启动
每天14点到15点每5分钟运行一次,此外每天18点到19点每5钟也运行一次。 0 0-5 14 * * ? 每天14:00点到14:05,每分钟运行一次。 0 10,44 14 ? 3 WED 3月每周三的14:10分到14:44,每分钟运行一次。 0 15 10 ? * MON-...
定时任务-scheduler_JOB.sql
基于多进程的定时任务管理器,支持秒级别的定时任务-php_crond
Quartz实现.Net Core项目定时任务-实例
《定时执行专家》是一款制作精良、功能强大、简单易用、毫秒级精度、专业级的定时任务执行软件。软件具有 18 种【任务类型】、12 种【触发器】触发方式,并且全面支持界面化Cron表达式设置。软件采用多线程并发方式...
不使用数据库动态设置定时任务-celery_demo
这个 job 定时任务执行将每分钟执行一次 test_procedure 存储过程。 三、定时任务执行 interval 设置 在 Oracle 中,定时任务执行的 interval 设置非常重要,需要根据不同的时间间隔设置不同的 interval。例如: ...
4、定时自动运行任务(在数据库中设置好定时时间,及运行的程序,及参数) 5、C#定时调度任务服务(Quartz.net做为任务调度核心,利用Log4Net做为日志输出,C#完成WINDOWS服务在后台定时执行任务) 6、android 后台...
另一个浙大健康打卡定时任务-ZJU_healthreport
Quartz.net作业调度自定义定时执行任务多任务执行c#,定时执行任务,如超时取消订单,自动确认收货等等
Spring Boot实现动态增加、删除、修改、停止定时任务-dynamicScheduler
1. SpringBoot 自定义线程池以及多线程间的异步调用(@Async、@EnableAsync) 2.Java多线程之定时任务 以及 SpringBoot多线程实现定时任务 3.@EnableScheduling 与 @Scheduled
一个测试工具,定时任务相关的。采用 springboot和quartz结合的方式,实现前台控制后台的定时任务。可以新增/删除/修改/启动/暂停/查询后台定时任务。
1_什么事定时任务.mp4 2_为什么学习定时任务.mp4 3_定时任务技术发展趋势.mp4 4_主流定时任务框架优缺点和什么是分布式定时任务.mp4 5_环境搭建总体流程.mp4 6_前期准备-JDK.mp4 7_前期准备-Maven.mp4 8_前期准备-...