У меня есть генератор событий для Flink CEP, код которого приведен ниже. По сути, я использую Thread.sleep()
и где-то читал, что java не может спать меньше 1 миллисекунды, даже если мы используем System.nanoTime()
. Код для генератора
public class RR_interval_Gen extends RichParallelSourceFunction<RRIntervalStreamEvent> {
Integer InputRate ; // events/second
Integer Sleeptime ;
Integer NumberOfEvents;
public RR_interval_Gen(Integer inputRate, Integer numberOfEvents ) {
this.InputRate = inputRate;
Sleeptime = 1000 / InputRate;
NumberOfEvents = numberOfEvents;
}
@Override
public void run(SourceContext<RRIntervalStreamEvent> sourceContext) throws Exception {
long currentTime;
Random random = new Random();
int RRInterval;
int Sensor_id;
for(int i = 1 ; i <= NumberOfEvents ; i++) {
Sensor_id = 2;
currentTime = System.currentTimeMillis();
// int randomNum = rand.nextInt((max - min) + 1) + min;
RRInterval = 10 + random.nextInt((20-10)+ 1);
RRIntervalStreamEvent stream = new RRIntervalStreamEvent(Sensor_id,currentTime,RRInterval);
synchronized (sourceContext.getCheckpointLock())
{
sourceContext.collect(stream);
}
Thread.sleep(Sleeptime);
}
}
@Override
public void cancel() {
}
}
Я уточню свое требование здесь простыми словами. Я хочу, чтобы класс генератора генерировал события, скажем, поток ЭКГ с частотой 1200 Гц. Этот генератор будет принимать такие параметры, как скорость ввода и общее время, за которое мы должны сгенерировать поток.
Пока все хорошо, проблема в том, что мне нужно отправить более 1000 событий в секунду. Как я могу сделать это, используя функцию генератора, которая генерирует значения U[10,20]
?
Также, пожалуйста, дайте мне знать, если я использую неправильный способ генерации x событий в секунду в приведенном выше ниже.
Sleeptime = 1000 / InputRate;
заранее спасибо
SleepTime
является целым числом, поэтомуSleeptime = 1000 / InputRate;
даст ноль, еслиinputRate
больше 1000. Вы используете неправильные типы данных или неправильное разрешение таймера. Если вы работаете в миллисекундах, вы не сможете обработать более 1000 событий в секунду. - person user207421   schedule 08.11.2017