我必须调用一个返回用户列表及其状态的 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的ScheduledExecutorService,它具有调度方法和设置延迟的选项。 ScheduledExecutorService 将持续检查用户状态。如果你想关闭该服务,你可以这样做。下面是相同的 Javadoc 链接: https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ScheduledExecutorService.html
关于java - 如何根据条件设置rest-api调用之间的等待时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55779868/