Концептуально я думаю, что вы делаете две вещи;
Во-первых, у вас есть уменьшенная версия time . Пока связь между этим временем и временем настенных часов остается постоянной, я уверен, что просто делегировал бы это масштабирующее поведение одному классу, который имел бы сигнатуры типа
DateTime getFutureTime( VirtualTimeSpan timespan)
Я бы использовал это для сопоставления виртуальных промежутков времени с экземплярами реального времени. После этого вы можете работать в режиме реального времени, что, вероятно, немного упростит задачу, поскольку вы можете использовать стандартные функции планирования.
Вторая часть касается планирования работы для будущего рабочего процесса. Есть несколько основных технологий, работающих с этим; Концептуально я думаю, что JMS - это Java-дедушка многих из них, он определяет понятия, очень похожие на те, которые вы используете, и то, что вам нужно. Я думаю, что взглянуть на JMS хорошо, чтобы увидеть концепции, которые могут вас заинтересовать, он использует селекторы для отправки заданий конкретным работникам, так же, как те, которые вы описываете.
Увы, JMS, похоже, никогда не отвечало требованиям большинства людей. Многие люди находили, что он был слишком тяжелым или реализации слишком глючные. Так что, как правило, люди заканчивали своими технологиями очереди. Но понятия все есть. Вы не можете просто использовать кварц?