Как периодически запускать задачу в Java
Некоторым Java-приложениям необходимо выполнять метод через определенный интервал времени. Например, приложение с графическим интерфейсом пользователя должно обновить некоторую информацию из базы данных.
1. Задача планировщика
Для этой функции
-
Вам следует создать класс, расширяющий TimerTask (доступный в пакете
java.util
). TimerTask - это абстрактный класс. -
Напишите свой код в общедоступном методе void
run()
, который вы хотите выполнять периодически. -
Вставьте приведенный ниже код в свой основной класс.
import java.util.TimerTask; import java.util.Date; /** * * @author Dhinakaran P. */ // Create a class extends with TimerTask public class ScheduledTask extends TimerTask { Date now; // to display current time // Add your task here public void run() { now = new Date(); // initialize date System.out.println("Time is :" + now); // Display current time } }
2. Запустить задачу планировщика
Класс для запуска над задачей планировщика.
-
Создать экземпляр объекта таймера
Timer time = new Timer();
-
Создать экземпляр класса запланированной задачи Object
ScheduledTask st = new ScheduledTask();
-
Назначьте запланированную задачу с помощью метода
Timer.shedule()
.
import java.util.Timer; /** * * @author Dhinakaran P. */ //Main class public class SchedulerMain { public static void main(String args[]) throws InterruptedException { Timer time = new Timer(); // Instantiate Timer Object ScheduledTask st = new ScheduledTask(); // Instantiate SheduledTask class time.schedule(st, 0, 1000); // Create Repetitively task for every 1 secs //for demo only. for (int i = 0; i <= 5; i++) { System.out.println("Execution in Main Thread...." + i); Thread.sleep(2000); if (i == 5) { System.out.println("Application Terminates"); System.exit(0); } } } }
Выход:
Execution in Main Thread....0 Time is :Tue Jun 19 14:21:42 IST 2012 Time is :Tue Jun 19 14:21:43 IST 2012 Execution in Main Thread....1 Time is :Tue Jun 19 14:21:44 IST 2012 Time is :Tue Jun 19 14:21:45 IST 2012 Execution in Main Thread....2 Time is :Tue Jun 19 14:21:46 IST 2012 Time is :Tue Jun 19 14:21:47 IST 2012 Execution in Main Thread....3 Time is :Tue Jun 19 14:21:48 IST 2012 Time is :Tue Jun 19 14:21:49 IST 2012 Execution in Main Thread....4 Time is :Tue Jun 19 14:21:50 IST 2012 Time is :Tue Jun 19 14:21:51 IST 2012 Application Terminates Time is :Tue Jun 19 14:21:52 IST 2012
Note
Если ваш код не содержит завершения, он не остановится. Так что вы должны использовать терминатор программы.