業務需求是:首先需要把表裏的數據打包成json格式放在一個文件夾下面,然後把每條數據中的圖片路徑對應的圖片也下載到該文件夾下面,最終打一個壓縮包上傳
1. 首先在類的最上面定義一個屬性,該屬性用於計算剩餘多少任務還未被執行,當cdl爲0時,線程調度停止
private static CountDownLatch cdl;
2. 爲cdl賦初始值,並開始下載,僅貼出部分代碼
cdl = new CountDownLatch(urlList.size());//賦值
final HttpTools httpTools = new HttpTools();
ExecutorService exec = Executors.newFixedThreadPool(10);
for (final String url : urlList) {
final String picName = url.substring(url.lastIndexOf("/") + 1, url.length());
exec.execute(new Runnable() {
@Override
public void run() {
cdl.countDown();
httpTools.download("xxxxxx.png");//自己定義的下載方法
}
});
}
try {
cdl.await();//恢復執行
} catch (InterruptedException e) {
e.printStackTrace();
}
exec.shutdown();//關閉線程池執行器