rip*_*234 12 java synchronization timer monitor
我正在使用java.util.Timer来安排定期任务.有一次,我想关闭它,等待它完成.
Timer.cancel()将阻止任何未来的任务运行.我如何确保当前没有任何任务正在运行(如果是的话,还是等待它们?)
我可以引入外部同步机制,但我不知道它们如何涵盖所有情况.例如,如果我在任务中的某个Monitor上进行同步,我仍然会错过任务刚刚开始执行但没有使用监视器的情况.
等待所有任务真正完成的建议做法是什么,包括当前正在运行的任务?
Mar*_*ark 22
您最好使用ScheduledExecutorService而不是Timer来安排定期任务.ScheduledExecutorService提供了一个shutdown()方法,该方法将执行任何挂起的任务.然后,您可以调用awaitTermination()以等待shutdown()完成.