当前位置: 代码迷 >> Java Web开发 >> Timer解决办法
  详细解决方案

Timer解决办法

热度:9990   发布时间:2016-04-10 23:23:32.0
Timer
用的框架是struts2,

目前在action 中,有这样一个方法

public String getWinData(){
logger.info("iLotteryID:" + iLotteryID + "iQueryTypeID:" + iQueryTypeID );

HttpServletRequest request = ServletActionContext.getRequest();

Timer timer = new Timer();
MyTask task = new MyTask(request,iLotteryID,iQueryTypeID);
timer.schedule(task, Integer.parseInt(Constants.timeInterval)*1000);

        //返回远端文件路径
return "winListTip";
}


我想外部调用这个方法后,就启动Timer,然后一分钟调用一次。
目前显示,在启动的时候,调用了一次,然后就一直没有调用。,

请问,为什么Timer在这里没起作用那。





------解决方案--------------------
MyTask 应该是线程,定时时候,启动线程,但是线程只是到了就绪状态,可能有这个误差吧。
------解决方案--------------------
schedule(TimerTask task, long delay, long period),用这个函数,少个参数,最后一个参数

具体参考API
  schedule(TimerTask task, long delay, long period)
Schedules the specified task for repeated fixed-delay execution, beginning after the specified delay.

http://docs.oracle.com/javase/7/docs/api/java/util/Timer.html#schedule%28java.util.TimerTask,%20long,%20long%29
------解决方案--------------------
少参数,第二个参数
------解决方案--------------------
schedule()三个参数的是按照延迟时间循环执行,两个参数的是只执行一次,记得是这样
  相关解决方案