TimeTask执行任务,会连续执行两次。求各位救我下!!
java网站,用的struts2,tomcat。后台用TimeTask执行自动推送任务。昨天发现这个自动任务居然每次执行会连续运行两次。
查了下是不是这个任务在那里启动的两次,也没有。麻烦各位帮我看下。
启动服务的代码:
Timer timer=new Timer();
Calendar target=Calendar.getInstance();
timer.schedule(new BadDayAutoPushTask(),target.getTime(),5*60*1000/*24*60*60*1000!!!!!!!!!!!!!!!部署时要打开。*/);
javaservlet?TimeTask Java Tomcat Struts
id, sendno,开始操作时间,结束操作时间, 操作状态, 用户数,
1, 1, 2013-06-23 11:30:00, 2013-06-23 11:30:25, 1, 39,
2, 2, 2013-06-23 11:30:00, 2013-06-23 11:30:24, 1, 39,
3, 3, 2013-06-24 11:30:05, 2013-06-24 11:30:36, 1, 41,
4, 4, 2013-06-24 11:30:05, 2013-06-24 11:30:36, 1, 41,
5, 5, 2013-06-25 11:30:00, 2013-06-25 11:30:44, 1, 72,
6, 6, 2013-06-25 11:30:00, 2013-06-25 11:30:44, 1, 72,
[解决办法]
看看问题是不是在BadDayAutoPushTask的实现上。
[解决办法]
你在 BadDayAutoPushTask() 的任务里面本身也要控制好只有当 BadDayAutoPushTask() 全部执行完了,才允许执行下一次调度。
例如:可以加入 synchronized () 来控制,不管有多少个线程调用,或不管是不是任务计划设置错了,你都应该让程序必须一个一个来执行。
[解决办法]
这种问题debug很容易解决,时间不应该浪费在论坛求解上。