如何在JavaSpring应用程序中并行调用多个soap调用
我想让我的soap请求调用在java中并行。 我对多线程还不熟悉,还没有找到实现多线程的方法如何在JavaSpring应用程序中并行调用多个soap调用,java,spring,multithreading,soap,Java,Spring,Multithreading,Soap,我想让我的soap请求调用在java中并行。 我对多线程还不熟悉,还没有找到实现多线程的方法 public List<TB600Model.Response> getTableDesc(final List<TB600Model.Request> requests) { List<TB600Model.Response> responses = new ArrayList<>(); for (TB600Model.Request
public List<TB600Model.Response> getTableDesc(final List<TB600Model.Request> requests)
{
List<TB600Model.Response> responses = new ArrayList<>();
for (TB600Model.Request request : requests)
{
responses.add(
this.modifyDescription(
this.getDescription(
request.getSite()
,request.getDescType()
,request.getKeyData()
,request.getEffMdy()
)
,request.getDescType()
,request.getKeyData()
)
);
}
return responses;
}
对于Java 8+,请尝试改用此方法:
requests.parallelStream().forEach(request -> {...});
将response.add的代码替换为
对于早期版本:
ExecutorService es = Executors.newFixedThreadPool(10);
List<Response> responses = new ArrayList<>();
for(Request request: requests){
Future<Response> future = es.submit(new Callable<Response>() {
@Override
public Response call() throws Exception {
//create your response here and return
}
});
try {
responses.add(future.get());
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
尝试编辑您的问题并以正确的形式发送,使用代码标记code@Mehdi更新的代码任何关于如何使调用并行运行的想法都会影响我的应用程序的性能。此代码尚未发送任何soap调用,它只是将响应信息保存在数组列表中。放置发送部分,我将告诉您如何并行编写代码getDescription中的部分正在调用客户端。添加了代码的图像我使用的是1.7版本,它不接受lambda表达式。下次请首先提及问题中的所有内容。请尝试上面的代码