【发布时间】:2019-04-01 08:16:41
【问题描述】:
我有一个任务要运行,延迟会不断变化(即 - 没有固定的时间间隔)。
我想要一个线程并无限循环以找到延迟值,将其输入到执行器中,然后在该任务完成后找到新的延迟值等。
我当前的“基本”实现:
long targetTime = findNextTime()/1000;
long currentTime = System.curentTimeMillis()/1000;
delay = targetTime - currentTime;
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(3);
Runnable task = new Runnable() {
public void run() {
System.out.println("Test Task");
ScheduledFuture<?> future = scheduler.schedule(this, delay, TimeUnit.SECONDS);
}
}
我怎样才能让它找到新的延迟并不断重复这个任务?
我应该轮询future 以完成然后执行递归循环吗?我试试这个,我得到一个错误。
【问题讨论】:
-
将延迟计算移入
run()?
标签: java multithreading executorservice scheduledexecutorservice