当前位置:编程学习 > JAVA >>

如何做一个时间可控制的定时任务

有一个需求 一个页面配置时间,后台根据页面配置的时间定时运行任务。比如说在页面上配置15分钟。在后台就要每15分钟运行这个方法。这样如何实现呢?spring quartz的好像都是写死的时间。求一个完整的例子或者是思路 谢谢!! spring quartz javaee 企业级开发 --------------------编程问答-------------------- 定时器 --------------------编程问答--------------------
引用 1 楼 fudongrifdr 的回复:
定时器
我知道定时器a 如何实现啊 --------------------编程问答-------------------- Timer不是有个schedule(TimerTask task, Date firstTime, long period) 吗 --------------------编程问答--------------------
引用 3 楼 fudongrifdr 的回复:
Timer不是有个schedule(TimerTask task, Date firstTime, long period) 吗
long period 是时间控制吧 可是如何从页面配置 一直读取数据库? --------------------编程问答-------------------- 重写TimerTask 的run方法 --------------------编程问答--------------------
引用 5 楼 fudongrifdr 的回复:
重写TimerTask 的run方法
求代码 --------------------编程问答-------------------- 木有现成的,自己研究吧 --------------------编程问答-------------------- 还有人吗?? --------------------编程问答-------------------- quartz也有动态的设置,可以百度。 --------------------编程问答--------------------

public void contextInitialized(ServletContextEvent event) {
    timer=new Timer(true);
Properties pro = null;
try {
pro = PropertiesUtils.getProps();
} catch (Exception e) {
e.printStackTrace();
}
String location = (String) pro.get("systemlocation");
int m = Integer.parseInt((String) pro.get("dateColldelayTimeSeconds"));
int n = Integer.parseInt((String) pro.get("dateColldelayLoopSeconds"));

 event.getServletContext().log("每10分钟就启动一次~~~~~~");
 
 timer.schedule(new EveryNMinuteDataCollectionTask(location),m*1000,n*1000*60);
 

}


每隔一个小时执行任务 timer.schedule(TimerTask, 0, 60 * 60 * 1000);
    schedule方法的第一个参数是需要执行的任务,此类的类型为java.util.TimerTask,第二个参数为执行任务前等待时间,此处0表示不等待,第三个参数为间隔时间,单位为毫秒

这里的间隔数据  你从后台获取就好了,或者从xml文件中获取 --------------------编程问答-------------------- quartz可以结合数据库,动态执行任务的。 --------------------编程问答--------------------
引用 10 楼 wenjie4892543 的回复:

public void contextInitialized(ServletContextEvent event) {
    timer=new Timer(true);
Properties pro = null;
try {
pro = PropertiesUtils.getProps();
} catch (Exception e) {
e.printStackTrace();
}
String location = (String) pro.get("systemlocation");
int m = Integer.parseInt((String) pro.get("dateColldelayTimeSeconds"));
int n = Integer.parseInt((String) pro.get("dateColldelayLoopSeconds"));

 event.getServletContext().log("每10分钟就启动一次~~~~~~");
 
 timer.schedule(new EveryNMinuteDataCollectionTask(location),m*1000,n*1000*60);
 

}


每隔一个小时执行任务 timer.schedule(TimerTask, 0, 60 * 60 * 1000);
    schedule方法的第一个参数是需要执行的任务,此类的类型为java.util.TimerTask,第二个参数为执行任务前等待时间,此处0表示不等待,第三个参数为间隔时间,单位为毫秒

这里的间隔数据  你从后台获取就好了,或者从xml文件中获取
   n*1000*60 是从后台取?那数据库连接一直开着吗?
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,