Как сделать таймер в javafx

Добавил пользователь Валентин П.
Обновлено: 05.10.2024

Таймер Java класс выполняет задачу или задание в определенный промежуток времени один или несколько раз. Это часть служебного класса Java. Этот класс также используется для планирования заданий на указанную дату с помощью встроенных методов.

Если мы хотим создать нашу собственную задачу, мы должны расширить ТаймерТаск class, который является абстрактным классом. Класс таймера использует эту задачу для планирования. Другими словами, Timer используется как планировщик, а TimerTask - это задание, которое необходимо запланировать.

Конструкторы таймеров Java

Методы таймера Java

Исключения таймера

Класс Java Timer выдает следующие исключения при планировании задач:

  • NullPointerException - когда задача или время равны нулю
  • IllegalArgumentException - когда время, задержка или период отрицательны
  • IllegalStateException - если задача уже была запланирована или отменена, таймер был отменен или поток таймера был прерван

Таймер Java: планирование задачи по расписанию (задача, время)

Таймер Java: планирование задачи по расписанию (задача, задержка)

В приведенном ниже примере мы планируем выполнение задачи с задержкой в ​​5 секунд. Если вы видите результат, вы можете ясно видеть, что Java Timer выполнил задачу с задержкой в ​​5 секунд.

Таймер Java: планирование задачи по расписанию (задача, время, период)

В приведенном ниже примере мы видим, что можем запланировать повторное выполнение задачи через равные промежутки времени, начиная с указанного времени.

Здесь Java Timer выполняет задачу, начиная с текущего времени, и продолжает ее выполнение каждые 2 секунды. Поскольку мы хотим отменить задачу через определенное время, мы вызываем отменить метод, основанный на определенном условии, иначе он будет выполняться постоянно. В нашем примере мы установили условие до i = 5. Как только он достигнет этого предела, Java Timer отменит задачу и остановит выполнение.

Таймер Java: планирование задачи по расписанию (задача, задержка, период)

В приведенном ниже примере мы планируем повторное выполнение задачи после определенной задержки (которая составляет 5 секунд), и Java Timer выполняет эту задачу в определенном временном интервале. Несмотря на то, что временной интервал составляет 1 секунду, поток выполняется каждые 2 секунды из-за другого нить который спит 2 секунды. Следовательно, если вы видите, что только первая задача выполняется с задержкой в ​​1 секунды, остальные выполняются каждые 3 секунды.

Запланировать задачу с помощью scheduleAtFixedRate (задача, время, период)

Этот метод полезен, когда нам нужно повторное выполнение с фиксированной частотой с периодическим интервалом, начиная с определенного времени. В приведенном ниже примере мы видим, что интервал выполнения задачи составляет 1 секунду, но Java Timer выполняет задачу каждые 3 секунды из-за того, что другой поток спит на 3 секунды. Поскольку эта 1 секунда находится в пределах 3-х секундного лимита, он не ждет еще одну дополнительную секунду и немедленно запускает выполнение следующей задачи.

Планирование задачи с помощью scheduleAtFixedRate (задача, задержка, период)

Здесь мы начинаем выполнение задачи после задержки в 2 секунды с периодическим интервалом в 1 секунду. Таймер Java выполняет задачу в течение 3 секунд из-за выполнения другого потока, который спит на 3 секунды. Поскольку интервал в 1 секунду находится в пределах этого спящего режима, выполнение следующего потока начинается немедленно без каких-либо задержек.

Таймер Java

Создание собственного Java-класса TimerTask

Мы можем создать наш собственный класс TimerTask, расширив абстрактный класс ТаймерТаск как показано в примере ниже. Каждый абстрактный класс TimerTask имеет пробег метод, который нам нужно переопределить для выполнения любой операции. В приведенном ниже примере Java Timer выполняет задачу каждую секунду, и через 5 секунд выполнение задачи отменяется и останавливается.

Огни один или больше ActionEvent s в указанных интервалах. Использование в качестве примера является объектом анимации, который использует a Timer как триггер для рисования его фреймов.

Установка таймера включает создание a Timer объект, регистрируя одного или более слушателей действия на этом, и запуская таймер, используя start метод. Например, следующий код создает и запускает таймер, который запускает событие действия однажды в секунду (как определено первым параметром Timer конструктор). Второй параметр Timer конструктор определяет слушателя, чтобы получить события действия таймера.

После конструкции начальная задержка и задержка между событиями могут быть изменены независимо, и дополнительные ActionListeners может быть добавлен.

Если Вы хотите, чтобы таймер стрелял только в первый раз и затем остановился, вызвать setRepeats(false) на таймере.

Хотя все Timer s выполняют свое ожидающее использование единственного, совместно используемого потока (создаваемый первым Timer объект, который выполняется), обработчики событий действия для Timer s выполняются на другом потоке - диспетчеризирующий событие поток. Это означает что обработчики действия для Timer s может безопасно выполнить операции на компонентах Swing. Однако, это также означает, что обработчики должны выполниться быстро, чтобы сохранить GUI быстро реагирующим.

В v 1.3, другом Timer class был добавлен к платформе Java: java.util.Timer . И это и javax.swing.Timer обеспечьте ту же самую основную функциональность, но java.util.Timer является более общим и имеет больше функций. javax.swing.Timer имеет две функции, которые могут сделать немного легче использовать с GUI. Во-первых, его метафора обработки событий знакома программистам GUI и может сделать контакт с диспетчеризирующим событие потоком немного более простым. Во-вторых, его автоматическое совместное использование потока означает, что Вы не должны сделать специальные шаги, чтобы избежать порождать слишком много потоков. Вместо этого Ваш таймер использует тот же самый поток, используемый, чтобы заставить курсоры мигнуть, подсказки появляются и так далее.

Можно найти дальнейшую документацию и несколько примеров использования таймеров, посещая , Как Использовать Таймеры , раздел в Учебном руководстве по Java. Для большего количества примеров и справки в выборе между этим Timer class и java.util.Timer , см. Используя Таймеры в Приложениях Swing , статью в Соединении Swing.

Предупреждение: Сериализированные объекты этого class не будут совместимыми с будущими выпусками Swing. Текущая поддержка сериализации является подходящей для краткосрочного хранения или RMI между приложениями, выполняющими ту же самую версию Swing. С 1.4, поддержка длительного хранения всего JavaBeansTM была добавлена к java.beans пакет. Пожалуйста, см. XMLEncoder .

Полевая Сводка

Сводка конструктора

Создает a Timer и инициализирует и начальную задержку и задержку между событиями к delay миллисекунды.

Сводка метода

Все Методы Статические Методы Методы экземпляра Конкретные Методы
Модификатор и Тип Метод и Описание
void addActionListener(ActionListener listener)

Возвращает строку, которая будет поставлена как команда действия в ActionEvent s запущенный этим таймером.

Возвраты true (значение по умолчанию), если Timer отправит событие действия его слушателям многократно.

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

Устанавливает строку, которая будет поставлена как команда действия в ActionEvent s запущенный этим таймером.

Наборы Timer 's между событиями задерживаются, число миллисекунд между последовательными событиями действия.

Наборы Timer 's начальная задержка, время в миллисекундах, чтобы ожидать после того, как таймер запускается прежде, чем запустить первое событие.

Как установить таймер, скажем, на 2 минуты, чтобы попытаться подключиться к базе данных, а затем бросить исключение, если есть какие-либо проблемы в соединении?

Итак, первая часть ответа заключается в том, как сделать то, о чем спрашивает субъект, поскольку именно так я первоначально интерпретировал это, и несколько человек, похоже, сочли это полезным. С тех пор вопрос был прояснен, и я расширил ответ, чтобы решить эту проблему.

Установка таймера

Сначала вам нужно создать таймер (я использую версию java.util здесь):

..

Чтобы запустить задачу, как только вы сделаете:

Чтобы задание повторилось после того, как вы сделал бы:

Создание таймаута задачи

Чтобы конкретно сделать то, что требует проясненный вопрос, то есть попытаться выполнить задачу в течение заданного периода времени, вы можете сделать следующее:

Это будет выполняться нормально с исключениями, если задача завершится в течение 2 минут. Если он работает дольше, чем это, TimeoutException будет брошен.

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

Хорошо, теперь я, кажется, понимаю вашу проблему. Вы можете использовать будущее, чтобы попытаться что-то сделать, а затем тайм-аут через некоторое время, если ничего не произошло.

Например:

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

Шаг 1

Откройте ваш файл Java в редакторе, таком как Eclipse, JBuilder X или Netbeans.

Шаг 2

Импортируйте необходимые классы времени вверху исходного файла Java, добавив код:

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

Шаг 3

открытый класс CountDown

класс DisplayCountdown extends TimerTask

Шаг 4

Сохраните исходный файл Java, скомпилируйте и запустите программу для просмотра таймера обратного отсчета.

Как сделать метки обратного адреса на Mac

Как сделать метки обратного адреса на Mac

Операционная система Mac OS X включает приложение под названием Адресная книга. Основная функция адресной книги - организовать ваши контакты. Тем не менее, он также может быть использован для создания .

Как поставить таймер обратного отсчета на видео

Как поставить таймер обратного отсчета на видео

Если у вас есть уникальное видео, в котором что-то важное происходит в какой-то момент времени, добавление таймера обратного отсчета может помочь создать напряженность и привлечь внимание к .

Как добавить часы обратного отсчета в электронное письмо

Как добавить часы обратного отсчета в электронное письмо

Читайте также: