【发布时间】:2015-09-25 22:54:43
【问题描述】:
我正在尝试使用并行流来调用 API 端点以取回一些数据。我正在使用ArrayList<String> 并将每个字符串发送到一个方法,该方法使用它来调用我的 API。我已经设置了并行流来调用一个方法,该方法将调用端点并编组返回的数据。对我来说问题是,当在 htop 中查看这个时,我看到数据库服务器上的所有核心都亮起,第二次我点击这个方法......然后当第一组完成时,我看到 1 或 2 个核心亮起。我的问题是,我认为我真的得到了我想要的结果......仅针对第一组呼叫,然后从监控来看,其余呼叫似乎一次完成一个。
我认为这可能与递归有关,但我不是 100% 确定。
private void generateObjectMap(Integer count){
ArrayList<String> myList = getMyList();
myList.parallelStream().forEach(f -> performApiRequest(f,count));
}
private void performApiRequest(String myString,Integer count){
if(count < 10) {
TreeMap<Integer,TreeMap<Date,MyObj>> tempMap = new TreeMap();
try {
tempMap = myJson.getTempMap(myRestClient.executeGet(myString);
} catch(SocketTimeoutException e) {
count += 1;
performApiRequest(myString,count);
}
...
else {
System.exit(1);
}
}
【问题讨论】:
标签: java multithreading parallel-processing java-stream