如何阻止TimerTask执行?

时间:2018-02-08 18:06:52

标签: java multithreading timer

How to stop a running TimerTask

我已经浏览了上述链接,我的问题并没有完全解决。

我们可以通过拨打timerObj.cancel()来停止计时器。 cancel方法的文档清楚地说:

  

取消{@code Timer}和所有计划任务。 如果有    当前正在运行的任务不受影响。此{@code Timer}不再安排任何任务。后续调用什么都不做

所以我的问题/关注点是,

如果在timer下安排了很多TimerTasks,我们怎么能阻止所有这些即使他们正在执行各自的run方法?有办法解决这个问题吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

您应该设计run方法,以便它可以自行确定何时终止,例如通过轮询AtomicBoolean的状态。

即使您要find the thread运行TimerTask,在线程上调用stop()或类似的方法也是inherently unsafe

相关问题