Java 如何立即终止(或中止)timetask

Java 如何立即终止(或中止)timetask,java,task,Java,Task,我希望在任务运行时立即终止(或中止)任务,而不是等待其结束。我在JDK中搜索,Timer类和TimerTask类不满意,它们的cancel方法对我来说不合适,因为任务将继续执行直到完成,但我想立即停止它 我该怎么办?我选择了Spring和Quartz,但没有好主意…这不是在多线程环境中建议执行的操作,因为它可以以各种方式破坏代码。例如,假设您正在更改某个内容的一半,突然您的线程被终止,使其处于半修改状态。因为不建议这样做,所以没有提供简单的方法 正确的方法是使用线程并中断它 在线程代码中,您可

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


我该怎么办?我选择了Spring和Quartz,但没有好主意…

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

正确的方法是使用线程并中断它

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

ScheduledExecutorService
还允许您处理
ScheduledFuture
cancel
这两个线程,其工作方式与中断线程相同


您不能取消已启动的任务。您可以查看
ExecutorService
API,特别是。提供了一种允许中断正在运行的任务的方法;但是,您的任务必须是可中断的。