多线程同时下载网页中的所有图片,完成后返回
/** * 处理内容中包含的图片信息 * @param content */ private List<String> handleImages(String articleUrl, Element content) { List<String> newImgUrls = new Vector<>(); ExecutorService threadPool = Executors.newFixedThreadPool(MAX_IMAGE_NUM);//newCachedThreadPool(); Set<String> imgUrls = new HashSet<>();//图片去重 content.select("img").forEach(elem -> imgUrls.add(elem.absUrl("src"))); imgUrls.forEach(imgUrl -> threadPool.execute(()-> { if(newImgUrls.size() < MAX_IMAGE_NUM) { String newUrl = downloadImageAndUploadToCloud(imgUrl, articleUrl); if (newUrl != null && newImgUrls.size() < MAX_IMAGE_NUM) newImgUrls.add(newUrl); } })); //等待所有线程执行完毕并返回结果 try { threadPool.shutdown(); threadPool.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS); } catch (InterruptedException e) { log.error("Download images interrupted", e); } threadPool.shutdownNow(); return newImgUrls; }
相关推荐
-
java二维码生成代码 java
2019-1-7
-
文件读取工具类 java
2019-1-13
-
Java图片高保真缩放工具类 java
2019-1-8
-
SQLiteOpenHelper.java java
2019-1-8
-
itextpdf 工具类 [ PdfUtil ] java
2019-1-12
-
java停车收费计算工具类 java
2019-1-7
-
java汉字转拼音 java
2019-1-7
-
properties转换yml格式 java
2019-1-13
-
java微信支付代码 java
2019-1-7
-
Sftp 上传下载 java
2019-1-8