如何取消计时器的现有计划

发布于 2024-12-11 21:55:09 字数 73 浏览 0 评论 0原文

目前我正在使用计时器在每个间隔时间执行一些函数。但是,稍后当我想更改执行该功能的间隔时,我无法取消之前的计划。如何解决这个问题?谢谢

Currently I am using a timer to execute some function every interval time. However, later on when I want to change the interval of executing the function, I cannot cancel the previous schedule. how this can be solved? Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

晨曦÷微暖 2024-12-18 21:55:09

使用timer.cancel()方法,您可以取消计时器和所有计划任务。 (请参阅 API 文档)或者您可以在 TimerTask 上调用 cancel 方法timertask.cancel()(请参阅API 文档)

如果您想更改预定时间您应该取消 TimerTask 并添加新的 TimerTask。

With the timer.cancel() method you can cancels the Timer and all scheduled tasks. (see API documentation) or you can call the cancel method on your TimerTask timertask.cancel() (see API documentation)

If you want to change the scheduled time you should cancel the TimerTask and add a new TimerTask.

那片花海 2024-12-18 21:55:09

您可以考虑使用 ScheduledThreadPoolExecutor 而不是 计时器。

用法非常简单。您创建一个执行器的实例:

ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor( 1 );

然后当您想要添加一个任务时,您可以调用:

executor.scheduleAtFixedRate( myRunnable, delay, interval, unit );

其中 myRunnable 是您的任务(它实现 Runnable 接口),delay是第一次执行任务之前需要多长时间,interval是第一次执行任务之后执行任务之间的时间。 delayinterval 是根据 unit 参数测量的,该参数可以是 TimeUnit.*(其中 * 是 SECONDS、MINUTES、MILLISECONDS 等) 。

然后要停止执行,您可以调用:

executor.shutdownNow();

然后您可以以不同的时间间隔重新提交任务。

注意:在重新提交任务之前,您可能需要创建执行器的新实例,但我不太确定为什么。

You could look into using a ScheduledThreadPoolExecutor instead of a Timer.

Usage is pretty straight forward. You create an instance of an executor:

ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor( 1 );

And then when you want to add a task you call:

executor.scheduleAtFixedRate( myRunnable, delay, interval, unit );

Where myRunnable is your task (which implements the Runnable-interface), delay is how long before the task should be executed the first time, interval is time between the execution of the task after first execution. delay and interval are meassured based on the unit parameter, which can be TimeUnit.* (where * is SECONDS, MINUTES, MILLISECONDS etc.).

Then to stop the execution you call:

executor.shutdownNow();

And then you can re-submit your task with a different interval.

Note: You might need to create a new instance of the executor before resubmitting your task, but I'm not quite sure why.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文