现状:用Timer做了一个定时器,能够每5秒处理一些数据。
问题:把系统时间延后,一切正常。(我也希望正常)
但是把系统时间提前 定时器失效。(好苦恼)要求:能否系统时间提前,定时器不失效??或者重新启动定时器??或者发个错误消息给我也可以吧?

解决方案 »

  1.   

    Timer其实也是Thread,用Thread试试哩。
      

  2.   

    Timer 和 TimeTask 存在设计上的缺陷,在 JDK 5 之后没有必要再使用这个类了,可以使用 java.util.concurrent.ScheduledExecutorService 来取代。
      

  3.   

    谢谢楼上的专家解答。这个方法可以替换Timer,因为它比较的是相对时间,不是绝对时间。所以不管怎么修改系统时间,都不受影响。见多识广,谢谢!
      

  4.   


    收获了~~~~刚看了下 Timer 类。只所以修改系统时间后,Timer 不再执行是因为在 Timer 中是以 System.currentTimeMillis() 获取当前时间,然后和 TimerTask 的下次执行时间进行比较,如果系统时间改小了,TimerTask 当然就不会运行。本想包装一下 Timer 和 TimeTask ,通过 Thread.sleep 来实现的.但是你这个更简单。学习了。