Введение
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.



