如何使用Unirest完成所有异步REST调用?

时间:2015-04-04 08:03:38

标签: java rest asynchronous unirest

作为异步编程的新手我想知道我如何等待所有期货完成?

在我目前的用例中,我必须使用JSON帖子逐行读取文件并将内容逐行发布到REST Web服务。但是当我以正常方式执行此操作时,程序就会在所有期货完成之前存在。

以下是该计划的一些代码。

while ((line = br.readLine()) != null) {
    Future<HttpResponse<String>> future = Unirest.post("http://www.dummy.net")
        .fields(map)
        .asStringAsync(new Callback<String>() {
            public void completed(HttpResponse<String> response) {
                int code = response.getStatus();
            }

            public void failed(UnirestException e) {
                System.out.println("The request has failed");
            }

            public void cancelled() {
                System.out.println("The request has been cancelled");
            }
        }
    );
}

此代码在所有期货完成之前运行并存在。有关我如何等待所有期货完成的任何提示?

1 个答案:

答案 0 :(得分:1)

将所有这些期货收藏,例如数组列表。把它们全部搞定。

List<Future> futures = ...
// your while loop

    foreach(Future f : futures) f.get();