我已经安排了一个方法在未来的某个日期运行;但是,某些事件可能会也可能不会在该日期之前发生,这意味着我想在指定日期之前运行该方法;我怎样才能做到这一点?我目前有:
Timer timer = new Timer();
TimerTask task = new TaskToRunOnExpriation();
timer.schedule(task, myCalendarObject.getTime());
我将在我的应用程序中运行许多这样的 TimerTask
,如果发生某种事件,是否停止它们的特定实例?
编辑
我只想取消给定事件的单个 Timer
,是否有一种方法可以管理 Timer
的身份,以便我可以轻松找到并停止它?
最佳答案
如果您有数千个,您应该使用 ScheduledExecutorService它将池化线程,而不是每个计时器使用一个线程的计时器。
调度任务时执行器服务返回的ScheduledFutures也有cancel方法来取消底层任务:future.cancel(true);
.
至于取消正确的任务,您可以将 future 存储在 Map<String, Future>
中。因此您可以通过名称或 ID 等方式访问它们。
关于java - 如何提前取消timer.schedule()调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18941437/