前言
又来更新了,得空记录下之前写得一个需求,欢迎大佬前来指教,轻喷
需求 导出Excel:本身以为是一个简单得导出,但是每行得记录文件中有一列为图片url,需要下载所有记录行对应得图片,然后压缩整个文件夹。
1.生成对应Excel___
2.根据时间日期创建对应文件夹#精确到毫秒级_____
3.Excel写入到对应得文件夹___
4.多线程根据图片Url写入到对应文件夹____
5.压缩整个文件夹,打包成.zip文件____
6.接口响应下载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列表的集合