JAVA怎么定时启动服务进程(满意答案给高分)

来源:百度知道 编辑:UC知道 时间:2024/05/21 09:01:46
我现在有一个功能是数据搬迁的,我要定时启动他,多线程什么的我都写好,其他的一切都写好了.但是现在我要定时,比如我要定时到今天晚上11点钟启动这个服务,这个类的代码如下(下面代码只是起说明作用,可以在下面代码基础上给出提示):
public class StartDataMoveEngine implements ServletContextListener{

private Timer timer = null ;

public void contextDestroyed(ServletContextEvent arg0) {

timer.cancel() ;
}
public void contextInitialized(ServletContextEvent arg0) {
DataMoveRun dmr = new DataMoveRun();

timer = new Timer();
Calendar calendar=Calendar.getInstance();
Date d1 = new Date() ;

Date date=new Date();

calendar.set(date.getYear(), date.getMonth(),date.getDay(),date.getHours(),date.getMinutes(),date.getSeconds());
timer.schedule(dmr, new Timestamp(calendar.getTimeInMillis()), 24*60*1000*60);//每隔24个小时运行一次
System.out.println("*************************"+new Date().getTime()+"启动数据迁移服务********************");

}

1、while(true) {
if (当前时间到了11点) {
做你的Task();
}
Thread.sleep(30*1000); //sleep 30 seconds
}

2、写一个.bat文件(里面调用你的Java类),用Windows的计划任务,每天11点执行这个.bat文件。
3、用开源的Quartz框架,专门做定时任务的。可能需要下载,看看文档,写几个配置文件。

推荐第三种,最专业的。

基本思想就是在你程序启动的时候获得当前时间,设为时间a,然后算出时间a到11点之间的时间间隔(毫秒),然后设置timer,task,定时爆发就可以了。