如何停止Java定时任务?
在Java中,可以使用'java.util.Timer'类和'java.util.concurrent.ScheduledExecutorService'接口来结束定时任务。
使用Timer停止任务
Timer类提供了一个cancel()方法来取消所有已安排的任务。
使用ScheduledExecutorService停止任务
ScheduledExecutorService接口提供了一个shutdown()方法来停止所有已安排的任务。
示例代码
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class StopScheduledTask {
public static void main(String[] args) {
// 使用Timer停止任务
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("定时任务执行!");
}
};
timer.schedule(task, 0, 1000);
try {
Thread.sleep(5000); // 运行5秒
} catch (InterruptedException e) {
e.printStackTrace();
}
timer.cancel();
// 使用ScheduledExecutorService停止任务
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
Runnable task2 = () -> System.out.println("定时任务执行!");
executor.scheduleAtFixedRate(task2, 0, 1, TimeUnit.SECONDS);
try {
Thread.sleep(5000); // 运行5秒
}
catch (InterruptedException e) {
e.printStackTrace();
}
executor.shutdown();
}
}
注意
cancel()方法将立即停止所有已安排的任务,而shutdown()方法将等待所有已安排的任务完成或超时后才停止。- 停止定时任务后,任何已安排的任务都将不再执行。
原文地址: https://www.cveoy.top/t/topic/lUUC 著作权归作者所有。请勿转载和采集!