我有一个url列表,我希望将它们全部并行打开,并使用Java spring RestTemplate将结果合并到最终的Java对象中。我能够实现它按顺序购买访问网址,但由于性能问题,我希望同时实现它们。期待听到您的建议
答案 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();
}
在流程结束时,您将获得结果的“列表”。