java - 如何提前取消timer.schedule()调用

标签 java time timer

我已经安排了一个方法在未来的某个日期运行;但是,某些事件可能会也可能不会在该日期之前发生,这意味着我想在指定日期之前运行该方法;我怎样才能做到这一点?我目前有:

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/

相关文章:

java - 文件读取循环中的 FileInputStream 内存泄漏

javascript - moment.js 日期会添加,但时间不会

go - 如何在 go 中使用 time.Parse() 逗号分隔毫秒

ios - 在 Swift 中的某个时间后使用 sprite 工具包更改场景?

C# 计时器在它们的间隔时间之前被触发

android - 根据 int 值更改 textswitcher/viewswitcher 的 textColor?

java - 如何循环遍历字符串并删除特定元素?

java - 为什么按下的键不会触发任何事件?

php - 计算两个时间之间的差异()

java - 使用 Maven 将 Java 模块依赖资源合并到 WAR 中