前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java8 parallel并行处理实战

java8 parallel并行处理实战

作者头像
老梁
发布2019-09-10 16:53:09
6430
发布2019-09-10 16:53:09
举报

需求

  1. 我需要做一个人员某几项数据的统计,由于数据量较大,不能一次性加载到内存进行统计。所以采用了遍历每个用户。当然也可以分配处理。
  2. 分析需求可得知,每个用户其实互不相关,数据的统计可以同步进行,因此考虑到并发执行。而java8刚好提供了这样的功能,对集合数据的并发执行parallel,所以有了以下测试

为加快统计速度尝试

  1. 原代码用时
    • 2018-10-15 15:03:22.863 |-INFO [SimpleAsyncTaskExecutor-1] com.beikbank.settlement.api.jobs.TaskJob [147] -| statMissUser统计数据完成,用时:196.033秒
  2. java8 代码用时
    • 2018-10-15 14:54:17.487 |-INFO [SimpleAsyncTaskExecutor-1] com.beikbank.settlement.api.jobs.TaskJob [152] -| statMissUser统计数据完成,用时:99.12秒

代码改变

原代码

代码语言:javascript
复制
for (Map<String, Object> allUser : allUserList) {
    String userIdkey = allUser.get("user_id").toString();
    ...//io数据库操作
}

使用java8 流并行代码

代码语言:javascript
复制
allUserList.stream().parallel().forEach(allUser -> {
    String userIdkey = allUser.get("user_id").toString();
    ...//io数据库操作
});

总结

  1. 数据统计存在数据库操作的,使用java8的parallel可以加快统计速度,从上面图片的对比可以看出,使用parallel后jdbc连接会存在多个并行执行,执行效率和机器配置内存等相关。
  2. 我使用的是window 2核4G且开了很多其他软件的情况测试,效率提升1倍左右
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-10-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 需求
  • 为加快统计速度尝试
    • 代码改变
    • 总结
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档