Я не уверен, что вы имеете в виду, когда прекращаете работу.
Но первая работа, которую вам нужно сделать, это запустить свои расписания в разных потоках и поместить их в очередь.
Если остановка означает приостановку на некоторое время, то вы создаете новое расписание, которое заставляет другие расписания спать некоторое время в полночь. Возможно, новое расписание должно быть запущено, когда поток спит, и способ предотвратить это - убедиться, что только одно расписание(Я имею в виду расписание того же типа) может быть одновременно помещено в очередь.
Если вы просто имеете в виду уничтожить все другие расписания в полночь, вам просто нужно запустить свои полночные расписания и убить других.
Извините за мой плохой английский, надеюсь, это поможет вам.