当前页面: 开发资料首页 → J2SE 专题 → 定时器问题,更改系统时间后定时器停止触发?
定时器问题,更改系统时间后定时器停止触发?
摘要: 定时器问题,更改系统时间后定时器停止触发?
windows下,程序中使用了几个javax.swing.timer定时器。 定时器启动后正常,此时把操作系统时间往前改,比如改到昨天,发现所有的定时器都停止触发了,把操作系统时间往后改没关系。各位高手有碰到过这种情况吗?该怎么解决?
呵呵。。。没有做过。。。帮你顶顶。。。
不是停止触发,是触发时间没到!
定时器会记录下触发的时间,比如2006-09-01 12:30,000
触发时间间隔是1小时,那么下次触发时间就是 2006-09-01 13:30,000
如果你把系统时间改成 2006-08-01 12:30,000
那么你只能等一个月才能触发了^^
别着急,慢慢等就好了:)
原来如此,果真高手。有没有好的办法呢?
它是读取系统时间来触发的.
没有事做,程序运行了还去改系统时间.
你把程序停了,重起一遍应该就可以了
你把程序停了,重起一遍应该就可以了。是可以的,但是此方法不可取
to:zzhzzh204553(真的好想你)。如果用户运行程序后,又修改系统时间怎么办?不能限制用户不改系统时间吧
你可以换一种方法,不要用计时器触发,自己sleep()或者wait();
比如要隔一个小时运行一次:
while(true){
//todo ....
....
//do end
wait(60*60*1000);
}
不过,我不清楚wait()或者sleep()是不是也和系统有关。
如果也是相关的那就不行了。
嗯。sleep可以的。 帖子保留两天,看有没有更好的办法,难道java的定时器就没有想到系统时间会改的问题?