Как периодически запускать задачу в Java

Как периодически запускать задачу в Java

Некоторым Java-приложениям необходимо выполнять метод через определенный интервал времени. Например, приложение с графическим интерфейсом пользователя должно обновить некоторую информацию из базы данных.

1. Задача планировщика

Для этой функции

  1. Вам следует создать класс, расширяющий TimerTask (доступный в пакетеjava.util). TimerTask - это абстрактный класс.

  2. Напишите свой код в общедоступном методе voidrun(), который вы хотите выполнять периодически.

  3. Вставьте приведенный ниже код в свой основной класс.

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. Запустить задачу планировщика

Класс для запуска над задачей планировщика.

  1. Создать экземпляр объекта таймераTimer time = new Timer();

  2. Создать экземпляр класса запланированной задачи ObjectScheduledTask st = new ScheduledTask();

  3. Назначьте запланированную задачу с помощью метода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
Если ваш код не содержит завершения, он не остановится. Так что вы должны использовать терминатор программы.