java中在定时器,定时每周一定时执行某个任务,必须在周一重新启动了服务,该任务就会在指定的时间点执行

Date date=new Date(System.currentTimeMillis());
Calendar cd=Calendar.getInstance();
cd.setTime(date);
Timer timer = new Timer( true );
cd.set(cd.get(Calendar.YEAR), cd.get(Calendar.MONTH),cd.get(Calendar.DATE), 12, 12, 12);
timer.schedule(new OrderWeekTask(cd,"month"), cd.getTime());
我使用的是TOMCAT的服务器,TOMCAT一直起动着,但在指定的时间上该任务不执行,
只有重新启动该服务器他才会执行,我觉得很奇怪,我觉得这样太麻烦了,每次任务执行前要重新启动tomcat一次太麻烦了,我不晓得代码,哪里有问题,谢谢大家的帮助!

最常用的做法是使用UNIX的cron直接执行Java程序。
并不需要在Java做的那么复杂。

Windows服务器也有类似于cron的任务管理功能,同理

--------------------------->
Tomcat不是用来管理定时任务的,如果没有HTTP请求,Servlet是不会被执行的。

建议lz把定期执行的处理做成一个独立的Java程序,用cron执行。
如果不想写独立的Java程序,也可以用cron定期向Tomcat发送Http请求,但是,这样做的话注意程序处理时间不能太长,因为HTTP通信有timeout的制约。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-09-01
不启动服务不可能执行任务。只能一直在后台运行这个服务或者用系统功能定时启动这个服务