java~并行计算~大集合的并行处理

本文介绍了如何设计并实现一个内存集合的并行处理组件,以提高处理大量用户行为统计的效率。通过将400个用户数据分为4组并行处理,每组再细分为50组进行多线程操作,从而将原本需要400秒的任务缩短至8秒,展示了Java并行计算的优势。
摘要由CSDN通过智能技术生成

本讲主要结合实际应用,来封装一个集合并行处理组件,我们的集合分为数据库查询出现的分页集合;还有一个是内存的集合,今天主要说一下内存集合的并行处理。

场景介绍

  • 有一个比较耗时的工作,将top 400的用户的行为信息统计
  • 统计的信息来自很多业务,很多服务,不能使用聚合直接计算
  • 这些业务统计的时间,大概每个人平均需要1秒
  • 这些用户的各种类型,彼此独立,没有关系

如何设计

如果直接顺序写代码,那1万的用户,需要400秒的时间,这是我们不能接受的,我们使用并行编程8秒就把它搞定。

如何实现

  • 400的集合,进行拆分,每100个为一组,分为4组(4页)
  • 对每100个集合进行拆分,每2个为1组,将100个分成了50组
  • 对50组数据,开50个线程并行处理,结果为2行完成
  • 400的信息,分成了4页,每页2秒,一共8秒

代码实现

/**
 * 数据集并行处理工具
 */
public class DataHelper {
    /**
     * 并行处理线程数字
     */
    static final int THREAD_COUNT = 50;
    /**
     * 单线程中处理的集合的长度,50个线程,每个线程处理2条,如果处理时间为1S,则需要2S的时间.
     */
    static final int INNER_LI
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值