java - 当需要多次设置和取消时,如何在 Java 中使用计时器?

原文 标签 java multithreading timer

我需要在计时器到期后执行某个代码块。但是如果设置了标志,定时器必须立即结束。

使用内置的 Timer 类,我可以在某个时间间隔后安排任务。问题是该类的实例只能被调度和取消一次,之后它会给出一个错误,即计时器已被取消。

简单的解决方案似乎是我每次都创建一个新的 Timer 实例。但这在这里是不可能的,因为我有一个无限的 while 循环,而且我一直需要重用同一个实例。

另一种方法是使用线程并创建自定义计时器函数。我试过了,但线程不会立即执行,因此如果我取消我的计时器,它不会立即取消,但只有在几毫秒后实现线程时才会取消。

我还有什么选择?

另请参阅 https://stackoverflow.com/questions/19585841/timer-instance-in-loop-in-java

最佳答案

看看ScheduledExecutorService

如果要取消正在运行的任务,需要保留对 Future<?> 的引用。提交任务时返回的对象,然后调用cancel()关于 future 。

有一个shutDown()shutDownNow()如果您想永久停止执行程序,请使用该方法。

关于java - 当需要多次设置和取消时,如何在 Java 中使用计时器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19585129/

相关文章:

java - JSP-单击按钮时更新textarea

java - ExecutorService没有及时终止

c# - 为什么带有ContinueWith选项的第二个线程不等待第一个线程的结束?

c++ - 避免在单一生产者单一消费者程序中忙于等待,即使用 spsc_queue

java - 独立的 NetBeans 兼容的 .form 编辑器

java - 正则表达式-可选地捕获2组

java - 如何正确地将文本从 SharedPreferences 文件 append 到 TextView 而不是覆盖它?

java - Android 中的定时弹出窗口

android - 如何设置一个实际起作用的Timer.scheduleAtFixedRate()?

c - 用一个物理定时器模拟多个虚拟定时器