Как запрограммировать таймер, который отслеживает несколько событий в Java? - PullRequest
3 голосов
/ 28 октября 2011

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

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

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

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

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

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

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

Ответы [ 2 ]

1 голос
/ 28 октября 2011

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

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

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

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

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

1 голос
/ 28 октября 2011

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

...