From d9e46c5e579e54b88dfd44e13a790e47cbe03d59 Mon Sep 17 00:00:00 2001 From: gsy <371279144@qq.com> Date: Tue, 16 Apr 2024 11:33:41 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=BF=E9=80=9A=E5=9B=BE=E7=89=87=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=EF=BC=8C=E5=A4=9A=E7=BA=BF=E7=A8=8B=E5=8F=96=E5=9B=BE?= =?UTF-8?q?=E7=89=87=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9=EF=BC=8C=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=9B=BE=E7=89=87=E5=AD=98=E6=94=BE=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/GreenTrafficServiceImpl.java | 40 ++++++++++++++----- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/nmgs/service/impl/GreenTrafficServiceImpl.java b/src/main/java/com/nmgs/service/impl/GreenTrafficServiceImpl.java index aff5d19..6aa5725 100644 --- a/src/main/java/com/nmgs/service/impl/GreenTrafficServiceImpl.java +++ b/src/main/java/com/nmgs/service/impl/GreenTrafficServiceImpl.java @@ -272,6 +272,7 @@ public class GreenTrafficServiceImpl implements IGreenTrafficService { //从配置文件中读取数据库连接类型 params.put("DBTYPE", PropertiesUtil.getValue("DBType")); + JSONArray jsonArray = new JSONArray(); List picList = new ArrayList<>(); //如果流水号没有的话,直接返回失败 @@ -293,6 +294,7 @@ public class GreenTrafficServiceImpl implements IGreenTrafficService { logger.info("取图片轮次=======round======="+round); + //定义同步工具,每轮五个线程 CountDownLatch countDownLatch = new CountDownLatch(5); // 同步工具 @@ -302,6 +304,15 @@ public class GreenTrafficServiceImpl implements IGreenTrafficService { //定义每一轮 取的时候从第几个下标开始取 1 6 11 int position = ((round-1)*taskCount)+1; + + //给jsonArray增加5张图片位置,让图片按照顺序放置 + for (int j = position-1 ; j < getOver ; j++){ + JSONArray pic = new JSONArray(); + pic.add(""); + pic.add(""); + jsonArray.add(pic); + } + //循环开启5个线程取图片 for (int i = position ; i <= getOver;i++) { @@ -309,10 +320,18 @@ public class GreenTrafficServiceImpl implements IGreenTrafficService { Map paramsWebService = new HashMap<>(); paramsWebService.put("listNO", params.get("listNo")+"_"+i); paramsWebService.put("imgType", "1"); + //执行线程 + + //定义每张图片要放置的位置,避免顺序错乱 + int finalI = i-1; greenTrafficThreadPool.execute( () -> { try { - picList.add(getPic(paramsWebService)); + //取出该位置的JSONArray,放置图片 + JSONArray pic = (JSONArray) jsonArray.get(finalI); + pic.set(1,getPic(paramsWebService)); + jsonArray.set(finalI,pic); + } catch (Exception e) { logger.info("获取图片失败========"+e); picList.add(""); @@ -327,8 +346,9 @@ public class GreenTrafficServiceImpl implements IGreenTrafficService { logger.info("主线程工作结束=============="); //遍历数据,是否有空,有空就停止执行 - for (String pic : picList) { - if("".equals(pic)){ + for (Object pic : jsonArray) { + JSONArray obj = (JSONArray) pic; + if("".equals(obj.get(1))){ isStop = false; break; } @@ -338,14 +358,12 @@ public class GreenTrafficServiceImpl implements IGreenTrafficService { logger.info("是否停止取图片=======isStop======="+isStop); } - //封装数据,为空的跳过 - JSONArray jsonArray = new JSONArray(); - for (String picUrl : picList) { - if(!"".equals(picUrl)){ - JSONArray jsonArrayPic = new JSONArray(); - jsonArrayPic.add(""); - jsonArrayPic.add(picUrl); - jsonArray.add(jsonArrayPic); + //封装数据,为空的删除 + for (int i = 0 ; i < jsonArray.size() ; i++) { + JSONArray obj = (JSONArray) jsonArray.get(i); + if("".equals(obj.get(1))){ + jsonArray.remove(i); + i--; } } //设置数据