并行url使用Java spring RestTemplate进行调用

时间:2018-01-04 10:10:46

标签: java spring resttemplate

我有一个url列表,我希望将它们全部并行打开,并使用Java spring RestTemplate将结果合并到最终的Java对象中。我能够实现它按顺序购买访问网址,但由于性能问题,我希望同时实现它们。期待听到您的建议

1 个答案:

答案 0 :(得分:0)

您可以使用线程执行并行作业。

首先,创建一个结果数据类来处理您的URL的响应

public class URLResult {

    public String url;
    public String response;
    public Date responseTime;

    // Add fields whatever you need

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getResponse() {
        return response;
    }

    public void setResponse(String response) {
        this.response = response;
    }

    public Date getResponseTime() {
        return responseTime;
    }

    public void setResponseTime(Date responseTime) {
        this.responseTime = responseTime;
    } 
}

然后在你的主题中使用它:

public List<URLResult> list = new ArrayList<>();

    public synchronized void addToList(URLResult result) {
        list.add(result);
    }

    public void hitUrl(String url) {

        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                URLResult result = new URLResult();
                //here, connect to your url, get the result then set your URLResult fields
                addToList(result);
            }
        });
        thread.start();
    }

在流程结束时,您将获得结果的“列表”。