Я ищу вариант ScheduledExecutor, который позволяет запускать задание с определенным интервалом, не дожидаясь завершения предыдущей задачи.scheduleWithFixedDelay с параллельными задачами перекрытия
Приведенный ниже код содержит 12 различных линий вывода с интервалом 5000 мс.
Учитывая интервал выполнения 50 мс и размер пула потоков 10, я ищу решение, которое имеет 10 выходных строк в первые 550 мс, а затем паузу до тех пор, пока потоки не будут освобождены и могут быть повторно использованы.
ScheduledExecutorService pollingExecutorService = Executors.newScheduledThreadPool(10);
final Runnable pollingTask = new Runnable() {
public void run() {
System.out.println("running poller " + DateTime.now().toString());
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
System.out.println("5000 passed");
}
};
ScheduledFuture<?> pollingHandler =
pollingExecutorService.scheduleWithFixedDelay(pollingTask,
0,
50,
TimeUnit.MILLISECONDS);
//wait secondsIdleBeforeShutdown seconds
try {
Thread.sleep(1000*60);
} catch (InterruptedException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
Не уверен, что ваш вопрос? – kosa
И что не работает с кодом выше? Примечание: вы можете использовать 'TimeUnit.MINUTES.sleep (1)' вместо 'Thread.sleep (1000 * 60)' – fge
Nambari, scheduleWithFixedDelay запустит следующий опросTask только после того, как предыдущий закончен. Я не хочу, чтобы он дождался завершения. Я хочу, чтобы он выполнял pollingTask каждые 50 мс. – Olja