如何立即终止(或中止)时间任务

时间:2013-12-31 02:35:37

标签: java task

我想在任务运行时立即终止(或中止)任务,而不是等待它的结束。我在JDK中搜索,Timer类和TimerTask类不满意,他们的取消方法对我来说不合适,因为任务将继续执行util完成,但我想立即停止它。

我该怎么办?我搜索Spring和Quartz,但没有好主意......

1 个答案:

答案 0 :(得分:0)

这不是建议在多线程环境中执行的操作,因为它可能以各种方式破坏您的代码。例如,想象一下你改变了一些东西,突然你的线程被杀死,让它处于半修改状态。因为不建议不提供简单的方法。

执行此操作的正确方法是使用线程并interrupt

http://docs.oracle.com/javase/tutorial/essential/concurrency/interrupt.html

在您的线程代码中,您可以在适合中止和中止的时候检查isInterrupted(),但是中止是由正在运行的线程控制的,这是唯一知道何时可以安全执行的线程

ScheduledExecutorService还允许您使用ScheduledFuturecancel,然后以与中断线程相同的方式工作。

http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Future.html#cancel(boolean)