如下代码所示,我使用 CompletableFuture 进行多线程的下载
但是我的 map 里面有 29 个图片 URL,我只得到了 26 张,所以求助大佬们,
1,我的代码哪里有问题
2,求助完整的 CompletableFuture 的使用方式
private static void downloadCompletableFuture(Map<String, String> map) {
try {
List<CompletableFuture<Void>> futureList = new ArrayList<>();
for (Map.Entry<String, String> stringStringEntry : map.entrySet()) {
// image Url
String imageUrl = stringStringEntry.getValue();
CompletableFuture<Void> future = CompletableFuture.runAsync(new Runnable() {
@Override
public void run() {
// download picture
DownloadPicture3.download(imageUrl);
}
});
futureList.add(future);
}
CompletableFuture<Void> allDoneFuture =
CompletableFuture.allOf(futureList.toArray(new CompletableFuture[0]));
allDoneFuture.get(20, TimeUnit.SECONDS);
} catch (Exception e) {
e.printStackTrace();
} finally {
log.info("end");
// 11:27:37.442 [main] INFO com.ice.http.JucDownloadPicture
}
}
```
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.