Этот вопрос относится к заданию колледжа.
Я хочу запускать блок кода каждые n * 2 секунды (например, подождать 1 секунду, запустить и подождать 2 секунды, запустить и подождать 4 секунды, запустить, et c) до 5 раз.
В настоящее время у меня есть что-то подобное.
int timer = 1000;
int tryCounter = 0;
while( !condition() && counter < 5){
doTask();
Thread.sleep(timer);
timer *= 2;
counter++;
}
Хотя это работает, моя оценка выигрывает от использования Thread.sleep()
. Я понял, что использование ScheduledThreadPoolExecutor
с фиксированной ставкой может быть одним из способов go, но я не могу заставить его работать из-за того, что интервал на самом деле не фиксирован.
Это для теоретического Распределенная система с высокими возможностями параллелизма, поэтому важна высокая масштабируемость.
Я мог бы обойтись без Thread.sleep()
, если бы на самом деле не было никакой выгоды или жизнеспособного способа сделать это, написав это в своем отчете. Так у кого-нибудь есть понимание этого?