当前位置 : 主页 > 编程语言 > java >

java多线程多个文件落库

来源:互联网 收集:自由互联 发布时间:2023-09-06
//传入参数是文件列表 FileList 里面包含文件路径文件名 public void dealFile( ListFileList segments) { try { if (null == segments || segments.isEmpty()) { return; } //子线程计数器 参数是子线程个数及分段数
//传入参数是文件列表  FileList 里面包含文件路径文件名

    public void dealFile( List<FileList> segments) {
        try {
            if (null == segments || segments.isEmpty()) {
                return;
            }
            //子线程计数器    参数是子线程个数及分段数
            final CountDownLatch cdl = new CountDownLatch(segments.size());
            segments.stream().filter(Objects::nonNull).forEach((v) -> {
                //开启子线程并发解析入库文件
                new Thread(()->{
                    log.debug(Thread.currentThread().getName());
                    try{
                        //读取文件方法
                        List<List<Data>> list =  readFile(v);
                        if (!FileUtils.isEmpty(list) && !FileUtils.isEmpty((Collection)list.get(0))) {
                            //插入数据方法
                            insertFileData(list);
                        }
                    }finally {
                        cdl.countDown();
                    }
                }).start();
            });
            //等待子线程全部处理完成继续主线程
            cdl.await();
        } catch (Exception e) {
            throw new  Exception(e);
        }

    }


上一篇:Java集合基础
下一篇:没有了
网友评论