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!!!!!!!!!!!!!!!部署时要打开。*/);
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, 
javaservlet TimeTaskJavaTomcatStruts

解决方案 »

  1.   

    看看问题是不是在BadDayAutoPushTask的实现上。
      

  2.   

    你在 BadDayAutoPushTask() 的任务里面本身也要控制好只有当 BadDayAutoPushTask() 全部执行完了,才允许执行下一次调度。例如:可以加入 synchronized () 来控制,不管有多少个线程调用,或不管是不是任务计划设置错了,你都应该让程序必须一个一个来执行。
      

  3.   

    这种问题debug很容易解决,时间不应该浪费在论坛求解上。
      

  4.   

    我debug过。在timer的start代码里断,启动的时候确实只运行了一次。但是不知道怎么就会连着执行两次。
      

  5.   

    已经解决了,问题出在tomcat的配置上。在server.xml的里发布应用时用了context,还配置的path,造成它重复发布应用了。