【发布时间】:2020-04-13 21:13:16
【问题描述】:
这个问题是针对大学作业的。
我想每 n*2 秒运行一段代码(例如,等待 1 秒并运行并等待 2 秒并运行并等待 4 秒并运行等)最多 5 次。
我目前有这样的东西。
int timer = 1000;
int tryCounter = 0;
while( !condition() && counter < 5){
doTask();
Thread.sleep(timer);
timer *= 2;
counter++;
}
虽然这可行,但我的成绩受益于不使用Thread.sleep()。我发现使用固定费率的ScheduledThreadPoolExecutor 是一种方法,但由于间隔实际上并没有固定,我无法让它工作。
这是一个理论上具有高并发能力的分布式系统,所以重要的是高可扩展性。
如果真的没有任何好处或可行的方法可以通过将其写在我的报告中,我可以使用Thread.sleep()。那么有人对此有任何见解吗?
【问题讨论】:
-
您可能希望任务的每次运行都以更长的延迟安排下一次运行,而不是调用固定费率。
标签: java executorservice threadpoolexecutor thread-sleep scheduledexecutorservice