Java stream 并发应用案例
在磁盘目录下有几十个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 并发应用案例的更多相关文章
- Java Stream函数式编程案例图文详解
导读 作者计划把Java Stream写成一个系列的文章,本文只是其中一节.更多内容期待您关注我的号! 一.什么是Java Stream? Java Stream函数式编程接口最初是在Java 8中引 ...
- 深度掌握 Java Stream 流操作,让你的代码高出一个逼格!
概念 Stream将要处理的元素集合看作一种流,在流的过程中,借助Stream API对流中的元素进行操作,比如:筛选.排序.聚合等. Stream 的操作符大体上分为两种:中间操作符和终止操作符 中 ...
- 【实战Java高并发程序设计6】挑战无锁算法:无锁的Vector实现
[实战Java高并发程序设计 1]Java中的指针:Unsafe类 [实战Java高并发程序设计 2]无锁的对象引用:AtomicReference [实战Java高并发程序设计 3]带有时间戳的对象 ...
- Java Stream 使用详解
Stream是 Java 8新增加的类,用来补充集合类. Stream代表数据流,流中的数据元素的数量可能是有限的,也可能是无限的. Stream和其它集合类的区别在于:其它集合类主要关注与有限数量的 ...
- 《实战java高并发程序设计》源码整理及读书笔记
日常啰嗦 不要被标题吓到,虽然书籍是<实战java高并发程序设计>,但是这篇文章不会讲高并发.线程安全.锁啊这些比较恼人的知识点,甚至都不会谈相关的技术,只是写一写本人的一点读书感受,顺便 ...
- Java高并发如何解决
Java高并发如何解决 对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了.而并发问题是绝大部分的程序员头疼的问题,但话又说回来了,既然逃避不掉,那我们就坦然面对吧 ...
- 高级java高并发,高性能,分布式,高可用,负载均衡,系统架构实战
java架构师.集群.高可用.高可扩 展.高性能.高并发.性能优化.Spring boot.Redis.ActiveMQ.Nginx.Mycat.Netty.Jvm大型分布 式项目实战 视频课程包含: ...
- 转载:Java高并发,如何解决,什么方式解决
原文:https://www.cnblogs.com/lr393993507/p/5909804.html 对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了.而并 ...
- 关于Java高并发的问题
前言: 对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了.而并发问题是绝大部分的程序员头疼的问题, 为了更好的理解并发和同步,我们需要先明白两个重要的概念:同步和 ...
随机推荐
- Jenkins的使用(一)
Jenkins 介绍: Jenkins是一个独立的开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成 变成可能.前身是Huds ...
- ImageUtility辅助类
public class ImageUtility { #region 合并用户QR图片和用户头像 /// <summary> /// 合并用户QR图片和用户头像 /// </sum ...
- (fiddler+loadrunner) fiddler抓包后转化为loadrunner脚本
众所周知,LR的各种浏览器不能正常弹出,以及脚本中的手工转译一直是困扰着广大性能测试工程师的一大问题. 我在做一个HTTP接口性能测试时,需要上报大量的json数据,这时使用LR进行脚本编写后然后自己 ...
- tensorflow常用函数(二)
一.变量相关的函数 1)tf.train.list_variables(ckpt_dir_or_file) Returns list of all variables in the checkp ...
- javascript(五)表达式
表达式 (expression) JavaScript中的一个短语, JavaScript解释器会将其计算(evaluate) 出一 个结果.程序中的常量是最简单的一类表达式.变量名也是一种简单的表达 ...
- QT场景视图父子关系图元打印研究
在之前的一篇文章中,实现了QT场景视图的打印功能,主要通过render函数来实现,非常简单和方便. 在实际的项目需求中,除了打印整个场景外,还需要对单个图形进行打印操作,基于item的图形可以在pai ...
- Python从零开始——安装与运行
- nginx常用伪静态设置
nginx里使用伪静态是直接在nginx.conf 中写规则的,并不需要像apache要开启写模块(mod_rewrite)才能进行伪静态. nginx只需要打开nginx.conf配置文件,在ser ...
- javascript中事件总结&通用的事件侦听器函数封装&事件委托
前言: JAVASCRIPT与HTML之间的交互是通过事件来实现的.事件,就是文档或浏览器窗口中发生的一些特定交互瞬间.可以使用侦听器( 或处理程序 )来预定事件,以便事件发生时执行相应的代码.这种在 ...
- c++ c的拓展
C++对c的拓展之, 引用和const关键字 bool类型关键字 C++中的布尔类型 C++在C语言的基本类型系统之上增加了bool C++中的bool可取的值只有true和false 理论上bool ...