CompletableFuture.allOf(a, b)
我可以在日志中看到两个线程处理同一个文件而不是一个线程。
private void fileScan() {
final Set<Video> videos = videoService.findAllVideoFiles();
for (Video video : videos) {
final CompletableFuture<Thumbnail> cover = thumbnailService.createCover(video);
final CompletableFuture<List<Thumbnail>> thumbnails = thumbnailService.createThumbnails(video);
CompletableFuture.allOf(cover, thumbnails);
try {
video.setCover(cover.get());
video.setThumbnails(thumbnails.get());
videoRepository.save(video);
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
}
Set
是由
Set<File> files = ConcurrentHashMap.newKeySet();
处理方法设置为
@Async
但是日志显示
START >> Thread thumbnail_thread_1 >> Video Dogs.mp4
START >> Thread thumbnail_thread_2 >> Video Dogs.mp4
END >> Thread thumbnail_thread_2 >> Video Dogs.mp4
END >> Thread thumbnail_thread_1 >> Video Dogs.mp4
START >> Thread thumbnail_thread_3 >> Video Cats.mp4
START >> Thread thumbnail_thread_4 >> Video Cats.mp4
END >> Thread thumbnail_thread_3 >> Video Cats.mp4
END >> Thread thumbnail_thread_4 >> Video Cats.mp4
是否有一个正确的模式我错过了,或我的日志只是不可信?