日期:2014-05-20  浏览次数:20594 次

请教Timer定时器的用法
我想要销毁掉能否有办法再启用?
或者说暂时停掉,需要的时候在启用。求大侠们帮帮忙
Java code


 Timer timer = new Timer("Timer-reconnect provider Timer");
 TimerTask task = new TimerTask() {
    @Override
    public void run() {
        log.info("it is time to check jtapi Provider.");
        try {
            checkProvider();
        } catch (Exception e) {
            log.info("the Network may be disconnected,please check!");
            e.printStackTrace();
        }
    }
}



在provider INSERVICE的時候关了
在provider OUTOFSERVICE的時候开启
在provider SHUTDOWN的時候关开启

我下面这样写就不行
Java code

    @Override
    public void providerInService(ProviderEvent event) {
        log.info("provider is InService.");
                timer.cancel();

    }

    @Override
    public void providerOutOfService(ProviderEvent event) {
        log.info("provider is OutOfService,please wait for InService.");
                timer.schedule(task, 3000, 10000);

    }

    @Override
    public void providerShutdown(ProviderEvent event) {
        log.info("provider is Shutdown,please wait for restart.");
                timer.schedule(task, 3000, 10000);
    }




------解决方案--------------------
每次cancel task,然后重新启动的时候,重新new一个task加入schedule