Проще всего было бы вести список студентов, каждый с именем и временем выхода.
Каждый «тик» часов проверяет, является ли текущее время> = выходом каждого студентавремя.
Если это так, распечатайте имена учеников с истекшим сроком действия и либо удалите их из списка, либо пометьте их как «просроченные», чтобы они больше не проверялись.
Вы бы хотели, чтобы этот список был синхронизирован, чтобы вы не добавляли студента во время итерации, но цикл обработки событий будет происходить очень быстро, поэтому это не должно быть серьезной проблемой.
Я согласен с @ madth3;просто используйте существующие механизмы для чего-то такого простого.