CompletableFuture多任務執(zhí)行

/**

* @param reqList

* @param localUrl

* @param type? ? 0:攝像頭抓拍

* @return

*/

public static ListcapturePic(List reqList, String localUrl, Integer type)throws ExecutionException, InterruptedException {

List> capList =new ArrayList<>();

? ? List list =new ArrayList<>();

? ? if (CollectionUtils.isNotEmpty(reqList)) {

for (MdCameraInfoReq req : reqList) {

String picUrl ="";

? ? ? ? ? ? if (Consts.INT_ZERO.equals(type)) {

//開啟線程

? ? ? ? ? ? ? ? CompletableFuture future = CompletableFuture.supplyAsync(() -> {

return CapturePicUtils.capturePic(req.getIp(), req.getPort(), req.getUserName(), req.getPwd(), req.getChannel(), localUrl);

? ? ? ? ? ? ? ? }, executorFinishWeighImgService);

? ? ? ? ? ? ? ? //抓圖線程list

? ? ? ? ? ? ? ? capList.add(future);

? ? ? ? ? ? }else {

picUrl = CapturePicUtils.captureNvrPic(req, localUrl);

? ? ? ? ? ? }

if (StringUtils.isNotBlank(picUrl)) {

list.add(picUrl);

? ? ? ? ? ? }

}

}

List captures =new ArrayList<>();

? ? CompletableFuture completableFuture = CompletableFuture.allOf(capList.toArray(new CompletableFuture[capList.size()]));

? ? //阻塞,直到所有任務結束

? ? completableFuture.join();

? ? CompletableFuture> captureList = completableFuture.thenApply(returnFuture -> {

capList.forEach(future -> {

try {

if (Objects.nonNull(future.get(5, TimeUnit.SECONDS))) {

captures.add(future.get(5, TimeUnit.SECONDS));

? ? ? ? ? ? ? ? }else {

log.error("獲取數(shù)據(jù)超時");

? ? ? ? ? ? ? ? }

}catch (InterruptedException e) {

log.error("終端異常:{}", e);

? ? ? ? ? ? }catch (ExecutionException e) {

log.error("capturePic執(zhí)行異常:{}", e);

? ? ? ? ? ? }catch (TimeoutException e) {

log.error("capturePic超時:{}", e);

? ? ? ? ? ? }

});

? ? ? ? return captures;

? ? });

? ? List baseList = captureList.get().stream().collect(Collectors.toList());

? ? return baseList;

}

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容