java里怎么倒计时

Java 中实现倒计时有两种方法:使用 ScheduledExecutorService 创建一个可重复执行的任务,直到时间到。使用 Timer 和 TimerTask 创建一个可重复执行的任务,直到时间到。

Java 中实现倒计时的两种方法

在 Java 中,可以通过以下两种方法实现倒计时:

1. 利用 ScheduledExecutorService

ScheduledExecutorService 是 Java 中一种用于安排延迟或定期任务的工具。我们可以使用它来创建一个可重复执行的任务,直到时间到。

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class CountdownScheduledExecutorService {

    public static void main(String[] args) {

        // 创建一个可重复执行的任务
        Runnable task = () -> System.out.println("倒计时: " + secondsLeft);

        // 创建一个 ScheduledExecutorService,以 1 秒的延迟每秒执行任务
        ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1);
        executorService.scheduleAtFixedRate(task, 1, 1, TimeUnit.SECONDS);

        // 设置倒计时时间(秒)
        int secondsLeft = 10;

        // 等待倒计时结束
        while (secondsLeft > 0) {
            secondsLeft--;
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

        // 停止任务
        executorService.shutdown();
    }
}

2. 利用 TimerTimerTask

TimerTimerTask 是 Java 中用于安排任务的 legacy 类。与 ScheduledExecutorService 类似,我们可以使用它们来创建一个可重复执行的任务,直到时间到。

import java.util.Timer;
import java.util.TimerTask;

public class CountdownTimer {

    public static void main(String[] args) {

        // 创建一个可重复执行的任务
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                System.out.println("倒计时: " + secondsLeft);
            }
        };

        // 创建一个 Timer,以 1 秒的延迟每秒执行任务
        Timer timer = new Timer();
        timer.schedule(task, 1000, 1000);

        // 设置倒计时时间(秒)
        int secondsLeft = 10;

        // 等待倒计时结束
        while (secondsLeft > 0) {
            secondsLeft--;
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

        // 取消任务
        task.cancel();

        // 停止 Timer
        timer.cancel();
    }
}