我正在尝试为第三方API(以异步方式工作)实现通用解决方案,但不知道如何以同步方式实现对我的应用程序的其余部分的调用。基本上API就像接受请求一样工作,处理它然后在完成时给出响应,但同时也开放接收其他请求。所以我把API响应方法放在一个线程中,以便通过调用时间间隔的api响应方法连续监视是否存在响应。
API具有接收请求的接口,如:
public void api_execute(string UUID,String request);
API响应对象:
public APIReponse
{
private String UUID;
private String response_string
// Getter setter
}
我想在这个API的顶部编写一个包装器,其中有一个方法,以便我的应用程序的不同对象使用它来发送请求和接收响应。所以UUID将由这个包装器类创建,但我没有得到我如何等待一个调用者对象,直到我收到一些响应,并且还区分哪个调用者发送哪个请求。我在这里考虑使用观察者模式,但似乎不适合这种情况。有人可以给我一个暗示我是如何实现这一点的。
答案 0 :(得分:0)
使用线程池
创建异步任务执行程序ExecutorService threadpool = Executors.newFixedThreadPool(3);
public Future<APIReponse> submitTask(APIRequest request) throws InterruptedException, ExecutionException {
System.out.println("Submitting Task ...");
Future<APIReponse> future = threadpool.submit(new Callable<APIReponse>() {
@Override
public APIReponse call() throws Exception {
api_execute(request,UUID);
return new APIReponse();
}
});
return future;