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



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

我该怎么办?我为春天和石英找了,但没有好主意...

不建议在多线程环境中执行此操作,因为它可能会以各种方式破坏您的代码。例如,假设您正在更改某些内容进行一半,突然您的线程被杀死,使其处于半修改状态。因为不建议这样做,所以没有提供简单的方法来做到这一点。

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

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

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

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

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

最新更新