有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

我该怎么办?我在寻找弹簧和石英,但没什么好主意


共 (1) 个答案

  1. # 1 楼答案

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

    正确的方法是使用一个线程并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)