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 NumberFormat 忽略美国语言环境中的逗号?

java - 如果方法未标记为公共(public)(所有类都在同一个文件中),程序将给出错误

java - 如何为 Java 套接字指定端口范围?

c++ - 在 mingw 中执行时禁用线程

java - java多线程是否可以优化多文件写入

javascript - 将秒转换为毫米 :ss in running JavaScript Timer

android - 在计时器后启动 Activity

java - ANTLR 努力解析整数与引用字符串

c# - 与 System.Windows.Forms.Timer 的间隔不一致

spring - Hibernate Jpa-主键(序列)上的约束违反异常