我必须调用一个返回用户列表及其状态的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