java起一个定时任务,在规定的时间内自动执行
2015-12-02 15:36
746 查看
java起一个定时任务,其实不难,代码很简单,只要你知道方法,2分钟就搞掂了。
定时任务控制类:
上述方法就已经启动了一个定时器,每天早上9点执行。
注解:
这一行代码引进一个作业,时间片到了,就会执行DmsTimedTaskJobAction类的execute方法。
这一行代码产生一个定时器对象,并规定在每天早上9点钟就会执行。
这一行代码将定时器和作业程序关联,实现定时执行作业的效果。
定时任务控制类讲解到此。
下面介绍具体的作业程序。
定时任务具体作业类:
这个类就没什么好讲的了。一看就懂了。
尾注:对于如何定义这个定时任务的执行时间,大家可以参考下面这个链接的介绍,感谢这位网友的热情分享。http://free0007.iteye.com/blog/1687936
定时任务控制类:
package com.comit.sc.job.dms; import java.util.Calendar; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import org.quartz.CronTrigger; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SchedulerFactory; import org.quartz.SimpleTrigger; import org.quartz.impl.StdSchedulerFactory; import com.comit.sc.job.action.DmsTimedTaskJobAction; /** * @author zyf * @TODO 定时任务控制类 * */ public class DmsTimedTaskJob implements ServletContextListener { @SuppressWarnings("unused") private static final SimpleTrigger CronTrigger = null; public static void main(String[] args){ try { test(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void test() throws Exception{ //通过SchedulerFactory来获取一个调度器 SchedulerFactory schedulerFactory = new StdSchedulerFactory(); Scheduler scheduler; try { scheduler = schedulerFactory.getScheduler(); //引进作业程序 JobDetail jobDetail = new JobDetail("jobDetail-s1", "jobDetailGroup-s1", DmsTimedTaskJobAction.class); //new一个触发器 //SimpleTrigger simpleTrigger = new SimpleTrigger("simpleTrigger", "triggerGroup-s1"); CronTrigger trigger = new CronTrigger("Test", null, "0 0 9 * * ?"); //表示每天9点执行 //设置作业启动时间 //long ctime = System.currentTimeMillis()+1000*30; //表示30秒之后启动 测试时用1000*5 //simpleTrigger.setStartTime(new Date(ctime)); Calendar cal = Calendar.getInstance(); trigger.setStartTime(cal.getTime()); //设置作业执行间隔 //simpleTrigger.setRepeatInterval(1000*18000); //设置成每天5个小时提醒一次18000 测试时用300 //设置作业执行次数 //simpleTrigger.setRepeatCount(-1); //测试时用10,-1表示无限次 //设置作业执行优先级默认为5 // simpleTrigger.setPriority(10); //作业和触发器设置到调度器中 scheduler.scheduleJob(jobDetail, trigger); //启动调度器 scheduler.start(); } catch (SchedulerException e) { // TODO Auto-generated catch block System.out.println("启动定时任务失败!"); } } public void contextInitialized(ServletContextEvent arg0) { // TODO Auto-generated method stub //System.out.println("启动触发器"); try { test(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void contextDestroyed(ServletContextEvent arg0) { // TODO Auto-generated method stub //System.out.println("关闭触发器"); } }
上述方法就已经启动了一个定时器,每天早上9点执行。
注解:
JobDetail jobDetail = new JobDetail("jobDetail-s1", "jobDetailGroup-s1", DmsTimedTaskJobAction.class);
这一行代码引进一个作业,时间片到了,就会执行DmsTimedTaskJobAction类的execute方法。
CronTrigger trigger = new CronTrigger("Test", null, "0 0 9 * * ?"); //表示每天9点执行
这一行代码产生一个定时器对象,并规定在每天早上9点钟就会执行。
scheduler.scheduleJob(jobDetail, trigger);
这一行代码将定时器和作业程序关联,实现定时执行作业的效果。
定时任务控制类讲解到此。
下面介绍具体的作业程序。
定时任务具体作业类:
package com.comit.sc.job.action; import java.text.SimpleDateFormat; import java.util.Date; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import com.comit.dockapply.service.DockApplyService; import com.comit.portlicenceinfo.service.PortLicenceInfoService; /** * 描述:定时任务 实体执行类 * * @author zyf * */ public class DmsTimedTaskJobAction implements Job{ /** * 序列号 */ private static final long serialVersionUID = 1427096854754L; public DmsTimedTaskJobAction() throws Exception{ super(); } /** * 所有需要执行的定时任务,都要写在这个方法体内 */ public void execute(JobExecutionContext arg0) throws JobExecutionException { System.out.println("============================================================================================="); System.out.println(new SimpleDateFormat("yy年MM月dd日 hh:mm:ss").format(new Date())); try { System.out.println("********证书过期提前短信通知定时任务启动!********"); //这里添加具体需要执行的方法,这里把我系统中的方法去掉了 System.out.println("********证书过期提前短信通知定时任务顺利结束!********"); } catch (Exception e) { System.out.println("********证书过期提前短信通知定时任务执行失败!********"); } System.out.println("============================================================================================="); } }
这个类就没什么好讲的了。一看就懂了。
尾注:对于如何定义这个定时任务的执行时间,大家可以参考下面这个链接的介绍,感谢这位网友的热情分享。http://free0007.iteye.com/blog/1687936
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统