java中在定时器,定时每周一定时执行某个任务,必须在周一重新启动了服务,该任务就会在指定的时间点执行
Datedate=newDate(System.currentTimeMillis());Calendarcd=Calendar.getInstance();cd.set...
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一次太麻烦了,我不晓得代码,哪里有问题,谢谢大家的帮助! 展开
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一次太麻烦了,我不晓得代码,哪里有问题,谢谢大家的帮助! 展开
2个回答
展开全部
最常用的做法是使用UNIX的cron直接执行Java程序。
并不需要在Java做的那么复杂。
Windows服务器也有类似于cron的任务管理功能,同理
--------------------------->
Tomcat不是用来管理定时任务的,如果没有HTTP请求,Servlet是不会被执行的。
建议lz把定期执行的处理做成一个独立的Java程序,用cron执行。
如果不想写独立的Java程序,也可以用cron定期向Tomcat发送Http请求,但是,这样做的话注意程序处理时间不能太长,因为HTTP通信有timeout的制约。
并不需要在Java做的那么复杂。
Windows服务器也有类似于cron的任务管理功能,同理
--------------------------->
Tomcat不是用来管理定时任务的,如果没有HTTP请求,Servlet是不会被执行的。
建议lz把定期执行的处理做成一个独立的Java程序,用cron执行。
如果不想写独立的Java程序,也可以用cron定期向Tomcat发送Http请求,但是,这样做的话注意程序处理时间不能太长,因为HTTP通信有timeout的制约。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询