Java8+線程使用記錄

executorService = Executors.newFixedThreadPool(17);
long start = System.currentTimeMillis();
CountDownLatch countDownLatch = new CountDownLatch(CacheConfigValues.length);
for (CacheConfig ch : CacheConfigValues) {
    Runnable runnable = () -> {
        String tableKey = StringUtils.nvlString(ch);
        try {
            Map<String, Object> codeMap = new HashMap<>();
            log.info("----------------TJSY---------------- [{}]", "加載" + tableKey + "信息");
            String field = ch.getField();
            String sqlid = ch.getSqlid();
            String tableName = ch.getTableName();
            Map<String, Object> paramMap = new HashMap<>();
            paramMap.put("TABLENAME", tableName);
            paramMap.put("FIELD", field);


            List<Map<String, Object>> codeResultList = DBUtils.queryBySqlId(sqlid, paramMap, 1, 10000, "");
            if("CODE_BZHLX".equals(tableName)){
                codeResultList.forEach(item -> {
                    String code = StringUtils.nvlString(item.get("SEARCH"));
                    codeMap.put(code, item);
                });
            }
            codeResultList.forEach(item -> {
                String code = StringUtils.nvlString(item.get("CODE"));
                codeMap.put(code, item);
            });
            codeCacheMap.put(tableKey, codeMap);
            log.info("----------------TJSY---------------- [{}]", "加載" + tableKey + "信息完成");
        } catch (Exception e) {
            log.info("----------------TJSY---------------- [{}]", "加載" + tableKey + "信息失敗");
            log.error("----------------TJSY---------------- [{}]", "錯誤信息:" + e.getMessage());
            flagMap.put("flag",false);
            e.printStackTrace();

        } finally {
            countDownLatch.countDown();
        }
    };
    executorService.submit(runnable);
}
try {
    countDownLatch.await();
} catch (InterruptedException e) {
    e.printStackTrace();
  
}




public Map<String, Object> extractAsjInfoCeShi(String asjbh, String canshu) {
        Map<String, Object> resultMap = new HashMap<>();
        String canShuInfo = asjbh + "&" + canshu;
        Map<String, Object> maps = BaseParamMapUtils.GetPivture(canShuInfo);
        List<Map<String, Object>> zbfzxyrList = (List<Map<String, Object>>) maps.get("TB_XW_ZBFZXYR");
        List<Map<String, Object>> flwsList = (List<Map<String, Object>>) maps.get("TB_ST_ASJ_FLWS");
        Map<String, String> codeMap = new HashMap<>();
        codeMap.put("FLWS_ASJFLWSDM", "CODE_ASJFLWS");
        CodeService.resultOfTransaction(codeMap, flwsList);
        List<Map<String, Object>> asjInfo = (List<Map<String, Object>>) maps.get("TB_ST_ASJ");

        List<Map<String, Object>> list = new ArrayList<>();
        flwsList.parallelStream().filter(e -> {
            String flws_dzwjgs = StringUtils.nvlString(e.get("FLWS_DZWJGS"));
            return StringUtils.equalsIgnoreCase(flws_dzwjgs, ".png")
                    || StringUtils.equalsIgnoreCase(flws_dzwjgs, "png")
                    || StringUtils.equalsIgnoreCase(flws_dzwjgs, ".jpg")
                    || StringUtils.equalsIgnoreCase(flws_dzwjgs, "jpg")
                    || StringUtils.equalsIgnoreCase(flws_dzwjgs, ".bmp")
                    || StringUtils.equalsIgnoreCase(flws_dzwjgs, "bmp")
                    || StringUtils.equalsIgnoreCase(flws_dzwjgs, ".jpeg")
                    || StringUtils.equalsIgnoreCase(flws_dzwjgs, "jpeg")
                    || StringUtils.equalsIgnoreCase(flws_dzwjgs, "pdf")
                    || StringUtils.equalsIgnoreCase(flws_dzwjgs, ".pdf");
        }).forEachOrdered(s -> list.add(s));

        zbfzxyrList.stream().forEach(e -> {
            List<Map<String, Object>> list1 = new ArrayList<>();
            String xxzjbh = StringUtils.nvlString(e.get("XXZJBH"));
            list.stream().forEach(item -> {
                if (xxzjbh.equals(StringUtils.nvlString(item.get("FLWS_GLXX_XXZJBH")))) {
                    list1.add(item);
                }
            });
            e.put("YSGLFJ", list1);
        });

        zbfzxyrList.stream().forEach(e -> {
            String xxzjbh = StringUtils.nvlString(e.get("XXZJBH"));
            list.removeIf(s -> StringUtils.nvlString(s.get("FLWS_GLXX_XXZJBH")).equals(xxzjbh)
            );
        });


        //獲取法律文書關聯信息信息主鍵編號
        String asjInfoAsjbh = null;
        for (Map<String, Object> asjMap : asjInfo) {
            asjInfoAsjbh = StringUtils.nvlString(asjMap.get("ASJBH"));
        }
        //創建線程
        ExecutorService executorService = Executors.newFixedThreadPool(17);
        long startTime = System.currentTimeMillis();
        CountDownLatch countDownLatch = new CountDownLatch(list.size());
        //存案件的法律文書信息
        for (Map<String, Object> asjFileMap : list) {
            String finalAsjInfoAsjbh = asjInfoAsjbh;
            executorService.submit(new Runnable() {
                @Override
                public void run() {
                    Map<String, Object> fileMap = new HashMap<>();
                    fileMap.put("asjbh", finalAsjInfoAsjbh);
                    fileMap.put("XXZJBH", StringUtils.nvlString(asjFileMap.get("XXZJBH")));
                    fileMap.put("FLWSLXDM", StringUtils.nvlString(asjFileMap.get("FLWS_ASJFLWSDM_CODE")));
                    fileMap.put("DZWJBT", StringUtils.nvlString(asjFileMap.get("FLWS_DZWJBT")));
                    fileMap.put("DZWJGS", StringUtils.nvlString(asjFileMap.get("FLWS_DZWJGS")));
                    fileMap.put("DZWJWZ", StringUtils.nvlString(asjFileMap.get("FLWS_DZWJWZ")));
                    Map<String, Object> map = null;
                    try {
//                        map = insertFlwsInfo(fileMap);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
            executorService.shutdown();
        }
        long endTime = System.currentTimeMillis();
        System.out.println("執行線程時間1:" + (endTime - startTime) + "ms");


        resultMap.put("TB_ST_ASJ_FLWS", list);
        resultMap.put("TB_XW_ZBFZXYR", zbfzxyrList);
        resultMap.put("TB_ST_ASJ", asjInfo);
        return resultMap;
    }


/**
     * 提取案事件信息(以及相關的犯罪嫌疑人信息+入庫)
     *
     * @param asjbh
     * @return
     */
    public Map<String, Object> extractAsjInfo(String asjbh, String canshu, String userGajgjgdm, String userGajgmc, String userXm, String userGmsfhm, String userLxdh) {
        Map<String, Object> resultMap = new HashMap<>();
        String canShuInfo = asjbh + "&" + canshu;
        Map<String, Object> maps = BaseParamMapUtils.GetPivture(canShuInfo);
        List<Map<String, Object>> zbfzxyrList = (List<Map<String, Object>>) maps.get("TB_XW_ZBFZXYR");
        List<Map<String, Object>> flwsList = (List<Map<String, Object>>) maps.get("TB_ST_ASJ_FLWS");
        Map<String, String> codeMap = new HashMap<>();
        codeMap.put("FLWS_ASJFLWSDM", "CODE_ASJFLWS");
        CodeService.resultOfTransaction(codeMap, flwsList);
        List<Map<String, Object>> asjInfo = (List<Map<String, Object>>) maps.get("TB_ST_ASJ");

        //保留照片和PDF格式的法律文書
        List<Map<String, Object>> flwsList1 = flwsList.stream().filter(e -> {
            String flws_dzwjgs = StringUtils.nvlString(e.get("FLWS_DZWJGS"));
            return StringUtils.equalsIgnoreCase(flws_dzwjgs, ".png")
                    || StringUtils.equalsIgnoreCase(flws_dzwjgs, "png")
                    || StringUtils.equalsIgnoreCase(flws_dzwjgs, ".jpg")
                    || StringUtils.equalsIgnoreCase(flws_dzwjgs, "jpg")
                    || StringUtils.equalsIgnoreCase(flws_dzwjgs, ".bmp")
                    || StringUtils.equalsIgnoreCase(flws_dzwjgs, "bmp")
                    || StringUtils.equalsIgnoreCase(flws_dzwjgs, ".jpeg")
                    || StringUtils.equalsIgnoreCase(flws_dzwjgs, "jpeg")
                    || StringUtils.equalsIgnoreCase(flws_dzwjgs, "pdf")
                    || StringUtils.equalsIgnoreCase(flws_dzwjgs, ".pdf");
        }).collect(Collectors.toList());

        //在犯罪嫌疑人信息中添加法律文書信息
        zbfzxyrList.stream().forEach(e -> {
            List<Map<String, Object>> list1 = new ArrayList<>();
            String xxzjbh = StringUtils.nvlString(e.get("XXZJBH"));
            flwsList1.stream().forEach(item -> {
                if (xxzjbh.equals(StringUtils.nvlString(item.get("FLWS_GLXX_XXZJBH")))) {
                    list1.add(item);
                }
            });
            e.put("YSGLFJ", list1);
        });

        //刪除添加到犯罪嫌疑人中的法律文書信息
        for (Map<String, Object> map : zbfzxyrList) {
            String xxzjbh = StringUtils.nvlString(map.get("XXZJBH"));
            for (Iterator iterator = flwsList1.iterator(); iterator.hasNext(); ) {
                Map<String, Object> nextMap = (Map<String, Object>) iterator.next();
                if (StringUtils.nvlString(nextMap.get("FLWS_GLXX_XXZJBH")).equals(xxzjbh)) {
                    iterator.remove();
                }
            }
        }

        //存法律文書信息
        //獲取法律文書關聯信息信息主鍵編號
        String asjInfoAsjbh = null;
        for (Map<String, Object> asjMap : asjInfo) {
            asjInfoAsjbh = StringUtils.nvlString(asjMap.get("ASJBH"));
        }
        //創建線程池對象
        ExecutorService executorService = Executors.newFixedThreadPool(17);
        long startTime = System.currentTimeMillis();
        CountDownLatch countDownLatch = new CountDownLatch(flwsList1.size());
        //存案件的法律文書信息
        for (Map<String, Object> asjFileMap : flwsList1) {
            String finalAsjInfoAsjbh = asjInfoAsjbh;
            Runnable runnable = () -> {
                Map<String, Object> fileMap = new HashMap<>();
                fileMap.put("asjbh", finalAsjInfoAsjbh);
                fileMap.put("XXZJBH", StringUtils.nvlString(asjFileMap.get("XXZJBH")));
                fileMap.put("FLWSLXDM", StringUtils.nvlString(asjFileMap.get("FLWS_ASJFLWSDM_CODE")));
                fileMap.put("DZWJBT", StringUtils.nvlString(asjFileMap.get("FLWS_DZWJBT")));
                fileMap.put("DZWJGS", StringUtils.nvlString(asjFileMap.get("FLWS_DZWJGS")));
                fileMap.put("DZWJWZ", StringUtils.nvlString(asjFileMap.get("FLWS_DZWJWZ")));
                try {

                    insertFlwsInfo(fileMap, userGajgjgdm, userGajgmc, userXm, userGmsfhm, userLxdh);
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    countDownLatch.countDown();
                }
            };
            executorService.submit(runnable);
        }

        try {
            countDownLatch.await();   //此處還可以設置等待時間 countDownLatch.await(3,TimeUnit.MILLISECONDS); 三分鐘
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        long endTime = System.currentTimeMillis();
        System.out.println("執行線程時間1:" + (endTime - startTime) + "ms");

        //存犯罪嫌疑人的法律文書信息
        for (Map<String, Object> fzxyrMap : zbfzxyrList) {
            if (!StringUtils.nvlString(fzxyrMap.get("YSGLFJ")).equals("")) {
                List<Map<String, Object>> ysglfjList = (List<Map<String, Object>>) fzxyrMap.get("YSGLFJ");
                //創建線程池對象
                ExecutorService executorService2 = Executors.newFixedThreadPool(17);
                long startTime2 = System.currentTimeMillis();
                CountDownLatch countDownLatch2 = new CountDownLatch(ysglfjList.size());
                for (Map<String, Object> ysglfjMap : ysglfjList) {
                    String finalAsjInfoAsjbh1 = asjInfoAsjbh;
                    Runnable runnable = () -> {
                        Map<String, Object> fileMap = new HashMap<>();
                        fileMap.put("asjbh", finalAsjInfoAsjbh1);
                        fileMap.put("rybh", StringUtils.nvlString(ysglfjMap.get("FLWS_GLXX_XXZJBH")));
                        fileMap.put("XXZJBH", StringUtils.nvlString(ysglfjMap.get("XXZJBH")));
                        fileMap.put("FLWSLXDM", StringUtils.nvlString(ysglfjMap.get("FLWS_ASJFLWSDM_CODE")));
                        fileMap.put("DZWJBT", StringUtils.nvlString(ysglfjMap.get("FLWS_DZWJBT")));
                        fileMap.put("DZWJGS", StringUtils.nvlString(ysglfjMap.get("FLWS_DZWJGS")));
                        fileMap.put("DZWJWZ", StringUtils.nvlString(ysglfjMap.get("FLWS_DZWJWZ")));
                        try {
                            insertFlwsInfo(fileMap, userGajgjgdm, userGajgmc, userXm, userGmsfhm, userLxdh);
                        } catch (Exception e) {
                            e.printStackTrace();
                        } finally {
                            countDownLatch2.countDown();
                        }
                    };
                    executorService2.submit(runnable);
                }
                long endTime2 = System.currentTimeMillis();
                System.out.println("執行線程時間2:" + (endTime2 - startTime2) + "ms");
            }

        }

        resultMap.put("TB_ST_ASJ_FLWS", flwsList1);
        resultMap.put("TB_XW_ZBFZXYR", zbfzxyrList);
        resultMap.put("TB_ST_ASJ", asjInfo);
        return resultMap;
    }
    /**
     * 自己測試Java8新特性
     *
     * @param asjbh
     * @param canshu
     * @return
     */
    public Map<String, Object> extractAsjInfoCeShi(String asjbh, String canshu, String userGajgjgdm, String userGajgmc, String userXm, String userGmsfhm, String userLxdh) {
        Map<String, Object> resultMap = new HashMap<>();
        String canShuInfo = asjbh + "&" + canshu;
        Map<String, Object> maps = BaseParamMapUtils.GetPivture(canShuInfo);
        List<Map<String, Object>> zbfzxyrList = (List<Map<String, Object>>) maps.get("TB_XW_ZBFZXYR");
        List<Map<String, Object>> flwsList = (List<Map<String, Object>>) maps.get("TB_ST_ASJ_FLWS");
        Map<String, String> codeMap = new HashMap<>();
        codeMap.put("FLWS_ASJFLWSDM", "CODE_ASJFLWS");
        CodeService.resultOfTransaction(codeMap, flwsList);
        List<Map<String, Object>> asjInfo = (List<Map<String, Object>>) maps.get("TB_ST_ASJ");

        List<Map<String, Object>> list = new ArrayList<>();
        flwsList.parallelStream().filter(e -> {
            String flws_dzwjgs = StringUtils.nvlString(e.get("FLWS_DZWJGS"));
            return StringUtils.equalsIgnoreCase(flws_dzwjgs, ".png")
                    || StringUtils.equalsIgnoreCase(flws_dzwjgs, "png")
                    || StringUtils.equalsIgnoreCase(flws_dzwjgs, ".jpg")
                    || StringUtils.equalsIgnoreCase(flws_dzwjgs, "jpg")
                    || StringUtils.equalsIgnoreCase(flws_dzwjgs, ".bmp")
                    || StringUtils.equalsIgnoreCase(flws_dzwjgs, "bmp")
                    || StringUtils.equalsIgnoreCase(flws_dzwjgs, ".jpeg")
                    || StringUtils.equalsIgnoreCase(flws_dzwjgs, "jpeg")
                    || StringUtils.equalsIgnoreCase(flws_dzwjgs, "pdf")
                    || StringUtils.equalsIgnoreCase(flws_dzwjgs, ".pdf");
        }).forEachOrdered(s -> list.add(s));

        zbfzxyrList.stream().forEach(e -> {
            List<Map<String, Object>> list1 = new ArrayList<>();
            String xxzjbh = StringUtils.nvlString(e.get("XXZJBH"));
            list.stream().forEach(item -> {
                if (xxzjbh.equals(StringUtils.nvlString(item.get("FLWS_GLXX_XXZJBH")))) {
                    list1.add(item);
                }
            });
            e.put("YSGLFJ", list1);
        });

        zbfzxyrList.stream().forEach(e -> {
            String xxzjbh = StringUtils.nvlString(e.get("XXZJBH"));
            list.removeIf(s -> StringUtils.nvlString(s.get("FLWS_GLXX_XXZJBH")).equals(xxzjbh)
            );
        });


        //獲取法律文書關聯信息信息主鍵編號
        String asjInfoAsjbh = null;
        for (Map<String, Object> asjMap : asjInfo) {
            asjInfoAsjbh = StringUtils.nvlString(asjMap.get("ASJBH"));
        }
        //創建線程池對象
        ExecutorService executorService = Executors.newFixedThreadPool(17);
        long startTime = System.currentTimeMillis();
        CountDownLatch countDownLatch = new CountDownLatch(list.size());
        //存案件的法律文書信息
        for (Map<String, Object> asjFileMap : list) {
            String finalAsjInfoAsjbh = asjInfoAsjbh;
            /*Runnable runnable = () -> {
                Map<String, Object> fileMap = new HashMap<>();
                fileMap.put("asjbh", finalAsjInfoAsjbh);
                fileMap.put("XXZJBH", StringUtils.nvlString(asjFileMap.get("XXZJBH")));
                fileMap.put("FLWSLXDM", StringUtils.nvlString(asjFileMap.get("FLWS_ASJFLWSDM_CODE")));
                fileMap.put("DZWJBT", StringUtils.nvlString(asjFileMap.get("FLWS_DZWJBT")));
                fileMap.put("DZWJGS", StringUtils.nvlString(asjFileMap.get("FLWS_DZWJGS")));
                fileMap.put("DZWJWZ", StringUtils.nvlString(asjFileMap.get("FLWS_DZWJWZ")));
                Map<String, Object> map = null;
                try {
//                        map = insertFlwsInfo(fileMap);
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    countDownLatch.countDown();
                }
            };
            executorService.submit(runnable);*/

            Future future = executorService.submit(new Runnable() {
                @Override
                public void run() {
                    Map<String, Object> fileMap = new HashMap<>();
                    fileMap.put("asjbh", finalAsjInfoAsjbh);
                    fileMap.put("XXZJBH", StringUtils.nvlString(asjFileMap.get("XXZJBH")));
                    fileMap.put("FLWSLXDM", StringUtils.nvlString(asjFileMap.get("FLWS_ASJFLWSDM_CODE")));
                    fileMap.put("DZWJBT", StringUtils.nvlString(asjFileMap.get("FLWS_DZWJBT")));
                    fileMap.put("DZWJGS", StringUtils.nvlString(asjFileMap.get("FLWS_DZWJGS")));
                    fileMap.put("DZWJWZ", StringUtils.nvlString(asjFileMap.get("FLWS_DZWJWZ")));
                    try {
                        insertFlwsInfo(fileMap, userGajgjgdm, userGajgmc, userXm, userGmsfhm, userLxdh);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });

        }
        executorService.shutdown();
        long endTime = System.currentTimeMillis();
        System.out.println("執行線程時間1:" + (endTime - startTime) + "ms");

        resultMap.put("TB_ST_ASJ_FLWS", list);
        resultMap.put("TB_XW_ZBFZXYR", zbfzxyrList);
        resultMap.put("TB_ST_ASJ", asjInfo);
        return resultMap;
   
	new Thread(new Runnable() {
                @Override
                public void run() {
                    
                }
            }).start();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章