`
luozhonghua2014
  • 浏览: 62465 次
文章分类
社区版块
存档分类
最新评论

并发处理巨量的List(适用快速批量处理巨量数据 )2

 
阅读更多


import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;


public class LargSumWithCallable {
	
	static int threadCounts =10;//使用的线程数  
	static long sum=0; 
    
  public static void main(String []args) throws InterruptedException, ExecutionException{
	
	     
     
    ExecutorService exec=Executors.newFixedThreadPool(threadCounts);  
    List<Callable<Long>> callList=new ArrayList<Callable<Long>>();  
 
    List<Integer> list = new ArrayList<Integer>();
    
    for (int j = 0; j <= 1000000;j++)  {  
        list.add(j);  
    }
     
    int len=list.size()/threadCounts;//平均分割List  
    //List中的数量没有线程数多(很少存在)  
    if(len==0){  
        threadCounts=list.size();//采用一个线程处理List中的一个元素  
        len=list.size()/threadCounts;//重新平均分割List  
    }  
    for(int i=0;i<threadCounts;i++){  
        final List<Integer> subList;  
        if(i==threadCounts-1){  
            subList=list.subList(i*len,list.size());  
        }else{  
            subList=list.subList(i*len, len*(i+1)>list.size()?list.size():len*(i+1));  
        }  
        //采用匿名内部类实现  
        callList.add(new Callable<Long>(){  
            public Long call() throws Exception {  
                long subSum=0L;  
                for(Integer i:subList){  
                    subSum+=i;  
                }  
                System.out.println("分配给线程:"+Thread.currentThread().getName()+"那一部分List的整数和为:\tSubSum:"+subSum);  
                return subSum;  
            }  
        });  
    }  
    List<Future<Long>> futureList=exec.invokeAll(callList);  
    for(Future<Long> future:futureList){  
        sum+=future.get();  
    }  
    exec.shutdown();  
    System.out.println(sum);
  }
 }
	
 


分享到:
评论

相关推荐

    java数据批量处理

    在Java编程领域,数据批量处理是一项常见的任务,尤其在大数据、数据库操作以及系统集成等场景中,批量处理能显著提高效率并减少资源消耗。本文将深入探讨Java如何进行数据批量处理,涉及的主要知识点包括批量读取、...

    批量处理数据

    这种处理方式通常适用于数据量大到无法逐一处理的情况,例如日志分析、批量导入导出、批量更新或清理数据库等。批量处理可以显著提高处理效率,降低系统资源消耗,并且有利于实现自动化工作流程。 在批量处理数据的...

    EasyExcel 并发读取文件字段并进行校验,数据写入到新文件,批量插入数据到数据库

    在Java开发中,处理大量数据时,...通过以上步骤,我们可以高效地使用EasyExcel处理Excel文件,实现并发读取、数据校验、写入新文件以及批量插入数据库的功能。这在处理大量数据时能显著提高效率,降低系统资源消耗。

    springmvc+spring线程池处理http并发请求数据同步控制问题

    同时,Spring框架提供的线程池功能则可以帮助我们优化多线程环境下的性能,特别是处理并发请求时。在这个主题中,我们将深入探讨如何利用Spring MVC与Spring线程池来有效地管理并发请求,并解决数据同步控制问题。 ...

    mybaits 多线程 实现数据批量插入 (运用CountDownLatch实现闭锁)

    这种方式适用于插入大量相似的数据,例如批量插入用户注册信息,每个用户的信息基本一致,只需改变个别字段。 接下来,我们讨论`数据分批量查询`。在处理大量数据时,一次性加载所有数据可能导致内存溢出。为了解决...

    Visual C++源代码 147 如何处理多用户更新数据并发问题

    Visual C++源代码 147 如何处理多用户更新数据并发问题Visual C++源代码 147 如何处理多用户更新数据并发问题Visual C++源代码 147 如何处理多用户更新数据并发问题Visual C++源代码 147 如何处理多用户更新数据并发...

    C# Access 大数据量 批量 效率 快速 导入

    "C# Access 大数据量 批量 效率 快速 导入"这个主题聚焦于如何利用C#语言高效地将大量数据批量导入到Access数据库中。Access作为一个小型数据库管理系统,虽然在处理小规模数据时表现出色,但在面对大量数据时,如果...

    大规模并发数据处理.pdf

    【大规模并发数据处理】是指在高并发环境下对海量数据进行高效、可靠的操作。随着互联网的发展,数据量呈指数级增长,传统的单线程处理方式已无法满足需求,因此并发处理成为了必要的技术手段。本文作者黄夏结合实际...

    Oracle并发问题处理

    2. **确定合适的并发处理机制**:基于业务需求选择合适的并发控制技术来确保数据的一致性和准确性。 #### Oracle并发处理机制详解 1. **利用数据库悲观锁完成并发控制** - **悲观锁机制**:这是一种较为传统的...

    java多线程实现大批量数据导入源码

    总的来说,本项目通过Java多线程技术,结合合理的数据切分和线程池管理,实现对大数据的高效批量处理。通过分析和优化这些关键点,我们可以根据实际情况调整参数,进一步提高数据导入导出的效率。

    LINQ 数据的更新,插入、删除、批量更新

    可以使用`Enumerable.ToList`先将数据加载到内存,然后批量处理: ```csharp var customersToUpdate = Entities.Customers.Where(c =&gt; c.Country == "OldCountry").ToList(); foreach (var customer in ...

    基于TCP多连接通信实时并发数据处理技术研究.pdf

    文章提出了一个以Java 2 Platform Standard Edition 5.0(J2SE5.0)为核心,利用多线程并发处理技术构建的自动气象站实时并发数据处理系统。系统具有实时性强、界面友好、操作方便的特点,并且运行稳定可靠,处理...

    一种利用并发提高数据处理吞吐率的模型.pdf

    并发提高数据处理吞吐率的模型是一种适用于分布式数据采集和集中式处理系统的解决方案,特别适用于具有实时性、大数据吞吐量和周期性特点的场景。该模型通过引入并发机制来提升数据处理效率,其核心在于并发缓存机制...

    ACCESS和SQL批量插入数据工具

    这款工具专为数据库管理员和开发人员设计,用于快速、高效地向ACCESS和SQL Server数据库中批量插入数据,尤其在进行负荷测试时,它能显著提高工作效率。 首先,我们来了解一下ACCESS。ACCESS是Microsoft Office套件...

    10万条数据下MySQL批量更新6种方式的性能测试.zip

    在大数据量、高并发的场景下,批量更新数据库是一个常见的操作。然而,不同的批量更新方法可能带来截然不同的性能表现。 通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理...

    ado.net并发冲突处理

    ado.net并发冲突的解决是一个难点,本文详细讲解了并发数据的处理

    C#处理大容量数据,及多线程简单应用

    例如,使用`SELECT INTO`语句进行数据导入,或者利用`BULK INSERT`命令快速批量导入大量数据。在导出数据时,可以使用`WITH (NOLOCK)`读锁定提示来减少锁竞争,提高并发性能。此外,索引的合理使用也能大幅提升查询...

    如何创建高并发处理系统--一个并发处理框架

    ### 如何创建高并发处理系统——一个并发处理框架 #### 概述 随着互联网服务规模的不断扩大,构建能够处理大量并发请求的系统变得至关重要。这些系统不仅需要在资源有限的情况下保持峰值吞吐量,还需要具备高可用...

    Java_LakeSoul是一个端到端实时和云原生的湖屋框架,具有快速数据摄取并发更新和增量数据分析的云存储,适用于B.zip

    传统的批量处理方式可能无法满足实时分析的需求,而LakeSoul支持对新产生的数据进行即时分析,帮助企业快速获取洞察,驱动业务决策。这种能力对于实时监控、预测分析以及异常检测等应用场景非常有价值。 在实际应用...

    批量更新两种方法实践

    在这个主题中,我们通常会遇到两种主要的方法:使用SQL语句批量更新和利用编程语言提供的数据处理库进行批量更新。 首先,SQL批量更新是最直接的方式,适用于对数据库的操作有直接控制的情况。例如,可以编写一个...

Global site tag (gtag.js) - Google Analytics