2015-05-04 37 views
1

我在Java调度程序中遇到了一个问题。我在使用TimerTask,当我在某个特定时间安排任务并更改操作系统时间时,TimerTask线程没有得到时间更新更新。所以计划的任务不会在指定的时间发生。当我在夏令时上工作时遇到此问题。如何在操作系统时间发生变化时收到通知

+0

你是什么意思“改变时间”? – 2015-05-04 12:17:16

+0

当日光变化发生时间将重置为1小时后退或前进。当这种变化发生时,线程会得到通知。 – Madhusudhan

+0

当日光变化发生时间将重置为1小时后退或前进。当这种变化发生时,线程会得到通知。让我们说在上午10点,线程将会等待,并且我在上午11点执行任务,但是在上午10点和上午11点之间时间重置1小时。如果时间重置发生在上午10:30到上午9:30,那么我打算在上午11点执行的任务将在上午10点执行,这是因为我让它等待了1个小时。我的问题是线程是否获取时间更改通知并仅在11AM执行或线程将在上午10点执行。 – Madhusudhan

回答

0

一般问题可能是事实,自1970年UTC以来的Date的毫秒是独立的日光时间变化。

要获取有关当前时间的信息 - 看到这样的回答:How to tackle daylight savings using Timezone in java

如何实现的呢?在一个单独的线程中写一个观察者,每隔几秒检查一次,或者将这样的任务添加到cron(Quartz?)中。检查每次通话之间的时区偏移。如果它们发生变化,则使用该事件重新初始化您的应用程序,但必要的。

相关问题