Ali*_*a87 0 java timer multimap guava timertask
我希望在一定的延迟后调用一个特定的方法.我尝试了不同的aproaches,如计时器,执行程序或处理程序.他们满足了他们应该做的事情,但有一点例外.延迟方法调用在番石榴的多图中进行了一些更改.在run
TimerTask 的方法中,输出就像我想要的那样.但是如果我打印出多边形图,run
那么更改将被撤消,我仍然拥有旧的多图值.但我需要更新的,因为我的数据保存在其中,我需要使用更新的值.
我的代码看起来像这样:
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
}
}
Run Code Online (Sandbox Code Playgroud)
就像我之前说过的那样,打印dataMap
at Point1会给出正确的输出,在Point 2处旧的值,比如Method UndoChanges
更新的调用.实现了多重映射,更改保持一致,并且通常必须更改值,但这不是这里的情况.我在这里错过了什么?如果有人知道在延迟后调用方法的方法不同,我会很高兴听到它.
谢谢,非常感谢
在安排撤消任务后,代码中的第2点立即执行.这是因为该schedule
方法立即返回:它不等待延迟传递和要执行的任务.这确实是使用Timers的重点:安排异步任务在将来的某个时间运行.
归档时间: |
|
查看次数: |
152 次 |
最近记录: |