java - 如何根据条件在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");
}
}
解决方案
您可以使用具有 schedule 方法和选项来设置延迟的 java 的 ScheduledExecutorService。ScheduledExecutorService 将不断检查用户状态。如果你想关闭服务,你可以这样做。以下是相同的 Javadoc 链接: https ://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ScheduledExecutorService.html
推荐阅读
- java - 更新 SQL 数据库列
- unity3d - 在运行时添加状态
- javascript - graphql 查询到 json 查询
- html - 将颜色主题更改为 HTML markdown
- file - 将数据附加到文件并确保它不会损坏
- javascript - 我正在尝试将 JS 数据传递到服务器端 python 的简单的 hello world
- javascript - 在javascript中将对象存储在数组中
- django - Django 数据透视表创建
- hadoop - org.apache.hadoop.fs.ParentNotDirectoryException: /tmp (不是目录)
- php - 通过每个选择中的两个不同列对具有两个选择的联合进行排序