如下代码所示,我使用 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
}
}
```
