How to stop a running TimerTask
我已经浏览了上述链接,我的问题并没有完全解决。
我们可以通过拨打timerObj.cancel()
来停止计时器。 cancel
方法的文档清楚地说:
取消{@code Timer}和所有计划任务。 如果有 当前正在运行的任务不受影响。此{@code Timer}不再安排任何任务。后续调用什么都不做
所以我的问题/关注点是,
如果在timer
下安排了很多TimerTasks,我们怎么能阻止所有这些即使他们正在执行各自的run
方法?有办法解决这个问题吗?
提前致谢。
答案 0 :(得分:0)
您应该设计run方法,以便它可以自行确定何时终止,例如通过轮询AtomicBoolean的状态。
即使您要find the thread运行TimerTask,在线程上调用stop()或类似的方法也是inherently unsafe。