小编MDD*_*r25的帖子

Java 重复执行任务 - 直到超时或满足条件 - 同步执行

我目前面临一个具体问题,我不知道如何解决。我简单描述一下这个问题:

  • 在一个方法中,我必须调用另一个方法并处理其响应
  • 如果此响应等于某个值,我将继续常规执行
  • 否则,我等待 x 秒(例如 2 秒)并再次调用该方法以再次处理其响应
  • 重复最后一个步骤,直到某个时间段到期或者该方法提供了预期的响应。因此,总的来说,我不会永远等待,而只会等待最多 10 秒,看看该方法是否在那段时间返回预期的响应。
  • 备注:如果该方法不需要 10 秒来传递预期结果,则此后应立即继续常规执行。这意味着如果 2 秒后出现结果,我不想等待 10 秒。

仅使用“老派”意味着我想出了如下的解决方案(部分伪代码以简化)

//No exception handling to simplify method
public ComplexValuePart mainMethod(int id) {
    //Other code executed before

    int maxAmountTries = 5;
    int waitTime = 2000;

    int counter = 0;
    boolean conditionFulfilled = false;
    ComplexValue cv = null;
    while (counter++ < maxAmountTries && !conditionFulfilled) {
        cv = calculatingMethod(id);
        if (cv.conditionHolds()) {
            conditionFulfilled = true;
        } else {
            Thread.sleep(waitTime);
        }
    }

    if (counter == maxAmountTries …
Run Code Online (Sandbox Code Playgroud)

java scheduled-tasks

8
推荐指数
1
解决办法
5328
查看次数

标签 统计

java ×1

scheduled-tasks ×1