3

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

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

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

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

我还有什么选择?

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

4

1 回答 1

1

看看ScheduledExecutorService

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

如果您想永久停止执行程序,则有shutDown()一种方法。shutDownNow()

于 2013-10-25T09:03:16.077 回答