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

时间:2022-10-17 23:32:15
有一个需求 一个页面配置时间,后台根据页面配置的时间定时运行任务。比如说在页面上配置15分钟。在后台就要每15分钟运行这个方法。这样如何实现呢?spring quartz的好像都是写死的时间。求一个完整的例子或者是思路 谢谢!!

12 个解决方案

#1


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

#2



引用 1 楼 fudongrifdr 的回复:
如何做一个时间可控制的定时任务定时器
我知道定时器a 如何实现啊

#3


Timer不是有个schedule(TimerTask task, Date firstTime, long period) 吗

#4


引用 3 楼 fudongrifdr 的回复:
Timer不是有个schedule(TimerTask task, Date firstTime, long period) 吗
long period 是时间控制吧 可是如何从页面配置 一直读取数据库?

#5


重写TimerTask 的run方法

#6


引用 5 楼 fudongrifdr 的回复:
重写TimerTask 的run方法
求代码 如何做一个时间可控制的定时任务

#7


如何做一个时间可控制的定时任务木有现成的,自己研究吧

#8


还有人吗??

#9


quartz也有动态的设置,可以百度。

#10



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文件中获取

#11


quartz可以结合数据库,动态执行任务的。

#12


引用 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 是从后台取?那数据库连接一直开着吗?

#1


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

#2



引用 1 楼 fudongrifdr 的回复:
如何做一个时间可控制的定时任务定时器
我知道定时器a 如何实现啊

#3


Timer不是有个schedule(TimerTask task, Date firstTime, long period) 吗

#4


引用 3 楼 fudongrifdr 的回复:
Timer不是有个schedule(TimerTask task, Date firstTime, long period) 吗
long period 是时间控制吧 可是如何从页面配置 一直读取数据库?

#5


重写TimerTask 的run方法

#6


引用 5 楼 fudongrifdr 的回复:
重写TimerTask 的run方法
求代码 如何做一个时间可控制的定时任务

#7


如何做一个时间可控制的定时任务木有现成的,自己研究吧

#8


还有人吗??

#9


quartz也有动态的设置,可以百度。

#10



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文件中获取

#11


quartz可以结合数据库,动态执行任务的。

#12


引用 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 是从后台取?那数据库连接一直开着吗?