Вызовите метод в фиксированное время в Java - PullRequest
1 голос
/ 25 февраля 2010

Как вызвать метод в определенное время?

Например, вызвать метод в 6:00 и 13:00.

Я работаю над настольным приложением для Windows.

Ответы [ 3 ]

10 голосов
/ 25 февраля 2010

Посмотрите на классы Timer и TimerTask. Вы можете запланировать выполнение потока в определенное время или несколько раз.

public class Alarm {
    Timer _timer;

    public Alarm() {

        // Create a Date corresponding to 10:30:00 AM today.
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY, 10);
        calendar.set(Calendar.MINUTE, 30);
        calendar.set(Calendar.SECOND, 0);

        Date alarmTime = calendar.getTime();

        _timer = new Timer();
        _timer.schedule(new AlarmTask(), alarmTime);
    }

    class AlarmTask extends TimerTask {
        /**
         * Called on a background thread by Timer
         */
        public void run() {
            // Do your work here; it's 10:30 AM!

            // If you don't want the alarm to go off again
            // tomorrow (etc), cancel the timer
            timer.cancel();
        }
    }
}
4 голосов
/ 25 февраля 2010

Альтернатива использованию Кварц . По сути, это то же самое, что и Timer или TimerTask, но оно позволяет описать, что должно выполняться с использованием синтаксиса в стиле cron.

3 голосов
/ 25 февраля 2010

Начиная с Java 1.5 есть предпочтительный способ, если вам нужно быть более строгим: ScheduledThreadPoolExecutor:

Этот класс предпочтительнее, чем Timer, когда требуется несколько рабочих потоков или когда требуется дополнительная гибкость или возможности ThreadPoolExecutor (который расширяет этот класс).

Там вы можете выбрать между scheduleAtFixedRate() и scheduleWithFixedRate(). Более подробную информацию об использовании можно найти в связанном javadoc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...