我希望在某個延遲之後調用特定的方法。我嘗試了不同的方法,如計時器,執行器或處理程序。他們完成他們應該做的事情,但有一點例外。延遲方法調用在番石榴的multimap中進行了一些更改。在run
- TimerTask的方法中,輸出就像我想要的那樣。但是,如果我在run
之外打印multimap,那麼這些更改將被撤銷,並且我仍然擁有舊的multimap值。但我需要更新的,因爲我的數據保存在其中,我需要更新的值才能使用。Java:通過Timer調用方法,但被調用的方法所做的更改不會保留在TimerTask之外
我的代碼看起來像這樣:
public class classTimer {
public static void main(String[] args) {
//some code, irrelevant for the task
new Timer().schedule(new TimerTask() {
@Override
public void run() {
dataMap = UndoManager.undoChanges(dataMap, a, hw);
// Point 1
}
}, delay);
// Point 2
}
}
就像我以前說過,印刷dataMap
點1處給出正確的輸出,在第2點的舊值,如法UndoChanges
是較新的調用。多變量映射實現的變化保持一致,通常這些值必須被改變,但這不是這種情況。我在這裏錯過了什麼?如果有人知道延遲後調用方法的另一種方法,我會很高興聽到它。
感謝,並在你的代碼非常讚賞
點2發生在點1之前。 – tom