ForkJoin处理千万条数据的多线程处理

本文介绍了如何使用ForkJoin框架在Java 7中处理大量数据的多线程操作,特别是在Windows环境下提高效率。通过将大任务拆分成小任务,利用RecursiveTask实现任务的细分和结果合并。详细展示了如何创建自定义任务类、任务分割逻辑以及执行流程,从而实现高效的数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这次我的任务是一次插入几千条用户操作数据,在虽然在Linux环境下执行影响不大,但是但window环境下非常的慢,甚至超过请求响应时间,然后我就用ForkJoin处理多数据操作问题,将大任务分为小任务来执行

Fork/Join框架是Java 7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。Fork/Join框架要完成两件事情:

  1.任务分割:首先Fork/Join框架需要把大的任务分割成足够小的子任务,如果子任务比较大的话还要对子任务进行继续分割

  2.执行任务并合并结果:分割的子任务分别放到双端队列里,然后几个启动线程分别从双端队列里获取任务执行。子任务执行完的结果都放在另外一个队列里,启动一个线程从队列里取数据,然后合并这些数据。

操作流程:

一、建立任务类,必须继承RecursiveTask,实现代码如下

public class MyTask extends RecursiveAction {

    @Autowired

    private AssemblyLogService assemblyLogService;

    

    private  List<AssemblyLog> list;

    

    // 每个"小任务"最多执行保存50个数

    private static int MAX = 50;

 

    private int start;

    private int end;

    

    

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值