首页 > 解决方案 > 如何根据条件在rest-api调用之间放置等待时间

问题描述

我必须调用一个返回用户列表及其状态的 API。例如:

[
  {"user":"ram",
    "status":"inprogress"
  },
  {"user":"abdullah",
    "status":"inprogress"
  },
  {"user":"jhon",
    "status":"completed"
  },
  {"user":"guru",
    "status":"inprogress"
  }
] 

如果任何用户的状态为“进行中”,则在“(用户数 *2)秒”之后必须再次调用相同的 API。

如果任何租户的状态仍然是“进行中”,则必须抛出异常

我想试试

    wait(number of users *2000) 
        or
   Thread.sleep(number of users *2000) 

除了这两个之外,还有什么最好的方法来实现它吗?

int no_of_users_status_is_inProgress=0;
ResponseEntity<UserAndStatusData> response=new RestTemplate.exchange(rl,HttpMethod.GET,reqEntity,UserAndStatusData.class,new Object[] {});
'
'
====updating no_of_users_status_is_inProgress====
'
'
if(no_of_users_status_is_inProgress>0){

   wait(no_of_users_status_is_inProgress*2000);

   ResponseEntity<UserAndStatusData> response2=new RestTemplate.exchange(rl,HttpMethod.GET,reqEntity,UserAndStatusData.class,new Object[] {});
   '
   '
   ====updating no_of_users_status_is_inProgress====
   '
   '
   if(no_of_users_status_is_inProgress>0){
      throw customException("timeout");
   }
}

标签: java

解决方案


您可以使用具有 schedule 方法和选项来设置延迟的 java 的 ScheduledExecutorService。ScheduledExecutorService 将不断检查用户状态。如果你想关闭服务,你可以这样做。以下是相同的 Javadoc 链接: https ://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ScheduledExecutorService.html


推荐阅读