在 Java 中,可以使用 Timer 和 TimerTask 类来实现定时器功能。下面是一个简单的例子,演示如何设置和停止 Java 定时器:

1. 创建 TimerTask 类
import java.util.TimerTask;

public class MyTimerTask extends TimerTask {
    @Override
    public void run() {
        // 定时执行的任务逻辑
        System.out.println("定时任务执行:" + System.currentTimeMillis());
    }
}

2. 创建 Timer 对象并设置定时任务
import java.util.Timer;

public class TimerExample {

    public static void main(String[] args) {
        // 创建 Timer 对象
        Timer timer = new Timer();

        // 创建 TimerTask 对象
        MyTimerTask myTimerTask = new MyTimerTask();

        // 设置定时任务,延迟 0 毫秒,每隔 1000 毫秒执行一次
        timer.schedule(myTimerTask, 0, 1000);

        // 等待一段时间后停止定时器
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        // 停止定时器
        timer.cancel();
        System.out.println("定时器已停止");
    }
}

在上面的例子中,MyTimerTask 类继承了 TimerTask,并实现了 run 方法,该方法中包含了定时执行的任务逻辑。在 TimerExample 类中,创建了一个 Timer 对象和一个 MyTimerTask 对象,并使用 schedule 方法设置定时任务的执行时间和间隔。随后,通过 Thread.sleep 方法等待一段时间,然后调用 timer.cancel() 停止定时器。

请注意,在实际应用中,Timer 类的使用已经不够灵活,更推荐使用 ScheduledExecutorService 接口的实现类 ScheduledThreadPoolExecutor,它提供了更强大和灵活的定时任务调度功能。

下面是一个使用 ScheduledExecutorService 的简单示例:
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class ScheduledExecutorExample {

    public static void main(String[] args) {
        // 创建 ScheduledExecutorService 对象
        ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);

        // 创建定时任务,延迟 0 秒,每隔 1 秒执行一次
        executor.scheduleAtFixedRate(() -> {
            // 定时执行的任务逻辑
            System.out.println("定时任务执行:" + System.currentTimeMillis());
        }, 0, 1, TimeUnit.SECONDS);

        // 等待一段时间后关闭定时任务
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        // 关闭定时任务
        executor.shutdown();
        System.out.println("定时任务已关闭");
    }
}

在这个例子中,使用 ScheduledExecutorService 来代替 Timer,并使用 scheduleAtFixedRate 方法设置定时任务的执行时间和间隔。同样,通过 Thread.sleep 方法等待一段时间后,调用 executor.shutdown() 来关闭定时任务。


转载请注明出处:http://www.zyzy.cn/article/detail/472/Java