Java Timer и TimerTask

JavaJavaBeginner

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

Java Timer и TimerTask используются для планирования задач на будущее. TimerTask - это абстрактный класс, реализующий интерфейс Runnable, который помогает планировать задачи в классе Timer. Мы можем определить задачу с использованием класса TimerTask и запланировать ее с использованием класса Timer. Timer использует фоновые потоки для планирования задач.

Импортировать необходимые пакеты

Импортируйте необходимые пакеты для Timer и TimerTask с использованием следующего кода.

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

Создать задачу с использованием TimerTask

Создайте задачу для выполнения с использованием класса TimerTask. Переопределите метод run(), чтобы определить задачу, которую нужно выполнить. Например, мы можем создать задачу для вывода "Hello, World!" следующим образом:

TimerTask task = new TimerTask() {
    public void run() {
        System.out.println("Hello, World!");
    }
};

Создать объект Timer

Создайте объект Timer с использованием следующего кода.

Timer timer = new Timer();

Запланировать задачу с использованием Timer

Используйте метод schedule() класса Timer для планирования задачи. Например, если мы хотим выполнить задачу через 1000 миллисекунд (одну секунду), мы можем использовать следующий код:

timer.schedule(task, 1000);

Это запланирует задачу на выполнение с задержкой в одну секунду.

Запланировать повторяемую задачу

Мы также можем запланировать задачу на выполнение повторно, используя метод schedule(), передав в качестве параметров задержку и период. В следующем примере мы запланируем задачу для вывода "Hello, World!" каждые 2 секунды, начиная с задержки в 1 секунду.

timer.schedule(task, 1000, 2000);

Отменить задачу

Мы также можем отменить запланированную задачу, используя метод cancel() класса TimerTask. В следующем примере задача запланирована на выполнение только один раз и затем отменяется.

TimerTask task = new TimerTask() {
    public void run() {
        System.out.println("Task is being executed...");
        cancel();
    }
};
timer.schedule(task, 1000);

Использовать метод scheduleAtFixedRate()

Мы можем использовать метод scheduleAtFixedRate(), чтобы запланировать задачу на выполнение с фиксированной скоростью, не зависимо от времени завершения предыдущего выполнения. Например, мы можем запланировать задачу для вывода "Hello, World!" каждые 2 секунды, не учитывая, сколько времени занимает выполнение задачи, используя следующий код:

timer.scheduleAtFixedRate(task, 1000, 2000);

Использовать ExecutorService

Мы можем использовать ExecutorService для планирования объектов TimerTask. Здесь мы используем ScheduledExecutorService для планирования задачи. Например, мы можем создать задачу для вывода "Hello, World!" каждые 2 секунды, используя следующий код:

ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
executor.scheduleAtFixedRate(task, 1000, 2000, TimeUnit.MILLISECONDS);

Скомпилировать и запустить код

Наконец, скомпилируйте и запустите код, используя следующую команду в терминале:

javac TimerTaskDemo.java && java TimerTaskDemo

Резюме

В этом практическом занятии мы узнали, как использовать Java Timer и TimerTask для планирования и выполнения задач в определенное время или с задержкой. Мы также узнали, как запланировать повторение задачи, отменить задачу, использовать метод scheduleAtFixedRate() и использовать ExecutorService для планирования объектов TimerTask.