在磁盘目录下有几十个txt文件,里面存储着XML格式的数据,每个文件在2-3M左右,现在需要将以上文件解析出来保存到mysql数据库,总数据量大概在30万条左右。

(1)首先通过stream并发解析TXT文件,然后将解析的结果按照LOAD DATA的标准全部保存到一个文件中;

    public static void t02(){
long startTime = System.currentTimeMillis(); //获取目录下的文件路径
String basePath = "G:/tmp/loaddatatest"; File filePath = new File(basePath); File[] files = filePath.listFiles(); List<File> fileList = Arrays.asList(files); fileList.stream().parallel().forEach(file -> {
try {
SAXReader saxReader = new SAXReader();
Document doc = saxReader.read(file); Element dataEle = doc.getRootElement(); Element list2Ele = dataEle.element("LIST2"); List<Element> itemEles = list2Ele.elements("item"); StringBuilder sb = new StringBuilder(); for (Element ele : itemEles) {
String t1= ele.elementText("t1");
//此处字段省略...
sb.append(t1).append(",")
.append(t2)......append("\r\n");
} FileUtils.writeStringToFile(new File("G:/tmp/loaddatatest/00.txt"), sb.toString(), "UTF-8", true);
} catch (DocumentException ex) {
Logger.getLogger(T03.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(T03.class.getName()).log(Level.SEVERE, null, ex);
}
}); long endTime = System.currentTimeMillis(); System.out.println("解析XML耗时:"+(endTime-startTime)+"ms");
}

(2)步骤(1)执行完成后,通过调用提前编写好的SHELL脚本将结果文件导入到mysql数据库;

参照《https://www.cnblogs.com/yshyee/p/11826416.html》。

(3)通过以上方式,全流程执行完成在8秒左右。

Java stream 并发应用案例的更多相关文章

  1. Java Stream函数式编程案例图文详解

    导读 作者计划把Java Stream写成一个系列的文章,本文只是其中一节.更多内容期待您关注我的号! 一.什么是Java Stream? Java Stream函数式编程接口最初是在Java 8中引 ...

  2. 深度掌握 Java Stream 流操作,让你的代码高出一个逼格!

    概念 Stream将要处理的元素集合看作一种流,在流的过程中,借助Stream API对流中的元素进行操作,比如:筛选.排序.聚合等. Stream 的操作符大体上分为两种:中间操作符和终止操作符 中 ...

  3. 【实战Java高并发程序设计6】挑战无锁算法:无锁的Vector实现

    [实战Java高并发程序设计 1]Java中的指针:Unsafe类 [实战Java高并发程序设计 2]无锁的对象引用:AtomicReference [实战Java高并发程序设计 3]带有时间戳的对象 ...

  4. Java Stream 使用详解

    Stream是 Java 8新增加的类,用来补充集合类. Stream代表数据流,流中的数据元素的数量可能是有限的,也可能是无限的. Stream和其它集合类的区别在于:其它集合类主要关注与有限数量的 ...

  5. 《实战java高并发程序设计》源码整理及读书笔记

    日常啰嗦 不要被标题吓到,虽然书籍是<实战java高并发程序设计>,但是这篇文章不会讲高并发.线程安全.锁啊这些比较恼人的知识点,甚至都不会谈相关的技术,只是写一写本人的一点读书感受,顺便 ...

  6. Java高并发如何解决

    Java高并发如何解决 对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了.而并发问题是绝大部分的程序员头疼的问题,但话又说回来了,既然逃避不掉,那我们就坦然面对吧 ...

  7. 高级java高并发,高性能,分布式,高可用,负载均衡,系统架构实战

    java架构师.集群.高可用.高可扩 展.高性能.高并发.性能优化.Spring boot.Redis.ActiveMQ.Nginx.Mycat.Netty.Jvm大型分布 式项目实战 视频课程包含: ...

  8. 转载:Java高并发,如何解决,什么方式解决

    原文:https://www.cnblogs.com/lr393993507/p/5909804.html 对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了.而并 ...

  9. 关于Java高并发的问题

    前言: 对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了.而并发问题是绝大部分的程序员头疼的问题, 为了更好的理解并发和同步,我们需要先明白两个重要的概念:同步和 ...

随机推荐

  1. C# 用Singleton类构建多线程单例模式

    public sealed class Singleton    {        private static volatile Singleton uniqueInstance;        p ...

  2. Asp.Net Core中使用NLog记录日志

    2019/10/28, Asp.Net Core 3.0, NLog 4.6.7, NLog.Web.AspNetCore 4.9.0 摘要:NLog在asp.net网站中的使用,NLog日志写入数据 ...

  3. 好用到哭!8个技巧让Vim菜鸟变专家

    原文: https://juejin.im/post/5da68cb8f265da5b8c03c4a1 Vim只不过是一个文本编辑器,但如果你曾见过真正的高手是如何使用vim的,你就会知道,这个软件出 ...

  4. Tp5 空模块、空控制器、空方法的处理

    1.空模块处理 如果是开启了路由 可直接找到route.php文件,具体的位置看个人放置的位置,在里面新增一个语句 '__miss__' => ['portal/index/errorMsg', ...

  5. 十八、Python面向对象之魔术方法

    1.类的比较 class A(object): def __init__(self,value): self.value = value def __eq__(self,other): return ...

  6. 小人大作战v0.02原型(单机)发布

    运行环境,pc,windows 链接:https://pan.baidu.com/s/1X5XR0flRAVuinnydNyRNng 提取码:cp9q 复制这段内容后打开百度网盘手机App,操作更方便 ...

  7. SpringBoot开发mockserver及生成swagger接口文档

    通过springboot开发mock server,包含get及post接口,用于练习接口自动化及jmeter很方便 当然,也为后面jenkins持续集成做基础(开发push代码后  → jenkin ...

  8. matlab-fsolve函数求解多元非线性方程

    记录一下代码,方便下次套用模板 options=optimset('MaxFunEvals',1e4,'MaxIter',1e4); [x,fval,exitflag] = fsolve(@(x) m ...

  9. Educational Codeforces Round 78 (Rated for Div. 2) C. Berry Jam

    链接: https://codeforces.com/contest/1278/problem/C 题意: Karlsson has recently discovered a huge stock ...

  10. 使用uwsgi+nginx部署项目

    Uwsgi:部署web应用程序 Nginx:反向代理,静态服务器 1.修改uwsgi配置文件>nginx反向代理[nginx接收请求->传递->[uwsgi] http=.. --& ...