Как запрограммировать таймер, который отслеживает несколько событий в Java?

#java #events #timer #clock

#java #Мероприятия #таймер #часы

Вопрос:

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

Итак, я хотел бы написать Java-программу, которая позволяет мне вводить время выхода, а затем отслеживать текущее время, пока оно не достигнет этого будущего времени выхода.

Моя проблема:

  1. Какой тип данных лучше всего использовать для такой задачи? На данный момент я смотрю как на дату, так и на календарь. В худшем случае, я придумаю какой-нибудь способ получить необработанное время ввода, например «2:43 вечера», преобразовать его в миллисекунды и измерить его в соответствии с текущим методом времени, который имеет система Java.
  2. Я хочу иметь возможность вводить несколько записей учащихся и синхронизировать их все одновременно. Как бы я это сделал? Потому что, как я понимаю, вам нужен цикл, который поддерживает работу программы, но в то же время гарантирует, что currentTime <любое из времен выхода. Каков был бы наилучший способ сделать это? На данный момент я подумываю о том, чтобы иметь массив времени выхода и просто систематически сравнивать каждый элемент с текущим временем в каком-то цикле, и когда достигается один выход, он удаляется из массива и отображается сообщение.

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

Любые советы будут оценены.

Ответ №1:

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

Ответ №2:

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

Каждый «тик» часов, проверьте, является ли текущее время> = время выхода каждого учащегося.

Если это так, распечатайте имена «просроченных» учащихся и либо удалите их из списка, либо пометьте как «просроченные», чтобы они больше не проверялись.

Вы бы хотели, чтобы этот список был синхронизирован, чтобы вы не добавляли ученика во время итерации, но цикл событий будет происходить очень быстро, так что это не должно быть серьезной проблемой вообще.

Я согласен с @madth3; просто используйте существующие механизмы для чего-то такого простого.