Java - 运行 不同时间间隔的任务

Java - Run tasks in varying time intervals

这个问题是关于大学作业的。
我想每 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()。那么有人对此有任何见解吗?

可以使用 ScheduledExecutorService 结合一些逻辑来安排任务。 .schedule 参数允许您指定要使用的时间单位。您可以声明一个变量来处理您尝试执行的增量。

int timer = 1000;
ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
    Runnable runnable = new Runnable() {
        public void run()
        {
           //Move your code you want to implement here
        }
    };
    //Increment your variable
    while(!condition()) {
        for(int i = 0; i < 5; i++) {
            service.schedule(runnable, timer, TimeUnit.SECOND);
            timer *= 2;
        }
    }

将您的代码执行移动到可运行块中,然后将其安排在递增计时器的 for 循环中应该可以实现您想要的效果。希望有帮助!