如何以通用方式实现方法调用等待

时间:2017-06-13 11:33:52

标签: java multithreading

我正在尝试为第三方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将由这个包装器类创建,但我没有得到我如何等待一个调用者对象,直到我收到一些响应,并且还区分哪个调用者发送哪个请求。我在这里考虑使用观察者模式,但似乎不适合这种情况。有人可以给我一个暗示我是如何实现这一点的。

1 个答案:

答案 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;