2015-05-04 38 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?)中。檢查每次通話之間的時區偏移。如果它們發生變化,則使用該事件重新初始化您的應用程序,但必要的。

相關問題