在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()方法将等待所有已安排的任务完成或超时后才停止。
  • 停止定时任务后,任何已安排的任务都将不再执行。
如何停止Java定时任务?

原文地址: https://www.cveoy.top/t/topic/lUUC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录