У меня класс Clock работает как поток. Несколько потоков производителей должны создавать объекты на основе тактов указанных часов. Производители могут быть сконфигурированы с помощью параметра конструктора (double), например productionRate = 550 (имеется в виду 550 объектов каждые 3600 тиков (каждый тик, представляющий секунду, то есть один час).
В приведенном ниже коде вы можете увидеть преобразование почасовой ставки в число, представляющее, сколько тиков должно пройти между тиками. Если использовать мой примерный номер, это будет выполнение каждые 6,54 тика. Теперь я не могу найти способ определить условия if, которые будут действительно производиться в соответствии со скоростью, что должно быть очевидно при взгляде на код. В настоящее время большую часть времени ни один автомобиль не создается, потому что это является неточным.
int curTicks = this.clock.getTicks();
double realFeedRate = 1 / (this.vehicleFeedRate / 3600);
if ((curTicks % (int) Math.round(realFeedRate) == 0 || curTicks - lastExecutionTicks == 0))
{
//Produce...
}
Теперь, есть ли более чистый способ для достижения постоянной производительности и иметь 550 (+ - только несколько) объектов, созданных после 3600 тиков (один смоделированный час)?
К сожалению, я обязан использовать собственную реализацию класса Clock и не могу использовать таймеры, предоставляемые Java.