前言
需求 导出Excel:本身以为是一个简单得导出,但是每行得记录文件中有一列为图片url,需要下载所有记录行对应得图片,然后压缩整个文件夹。
这里只做4.5.得代码讲解描述,其它也没什么好说得,话不多说上代码.
实现思路
多线程实现使用了线程池,Jdk1.8并发包下的CompletableFuture
第一步:得到基础数值
// 线程数
Integer threadNum = 10;
// 每条线程需要处理的图片数
int dataNum = imageInfoVos.size() / threadNum;
// 写入线程数
List<Integer> threadS = new ArrayList<>();
for(int i=0; i<threadNum; i++){
threadS.add(i);
}
首先我们保存了需要下载的图片的Url列表,多线程的方式下载我们需要保证每个线程下载的图片不会重复,因此我们需要根据规则来切割保存Url列表的集合,从而保证每个线程下载属于自己的任务,上代码 :
// 接上文代码
threadS.stream().map(item -> CompletableFuture.runAsync(() ->{
List<Image> theadItem = imageIn