并发处理巨量的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);
  }
 }
时间: 2024-09-10 23:58:29

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

jQuery通过ajax快速批量提交表单数据_jquery

当表单数据项很多时,手动获取表单项的值将变得效率低下,结合jQuery提供的函数serialize(),我们可以实现快速获取数据并提交表单数据. 请看下面的表单: <form id="fm"> <table> <tr> <td>姓名</td> <td> <input type="text" name="name" /> </td> </tr>

实例讲解快速提高网站收录量的三个技巧

网站收录量的高低是站长做长尾关键词优化时必须解决的问题之一,毕竟长尾关键词优化主要是利于内页进行的,而如果内页连收录都无法进行的话,那还怎么做长尾关键词优化呢.况且用首页做长尾关键词优化确实有点大材小用的感觉,自然也因为长尾关键词竞争度不高,用内页来优化是最合适不过的.当然这些都需要建立在内页被收录的基础上.那么对于网站收录量多少其实就是内页是否被收录的问题了.今天笔者谈谈如何快速提高网站收录量的方法,也就是如果让内页被收录的方法吧. 一.提高空间的访问速度   很多站长都认为网站空间的速度与网

用查找替换快速批量删除Word中的回车符号

有时候我们从网页上复制一些文章到Word中时,往往会带有好多向下箭头的符号,这就是软回车符号(Word中软回车是同时按住shift+enter得来的), 这些软回车占用了Word很多的空间,如果手动一个一个删实在太麻烦了,怎样才能快速批量删除这些软回车符号呢? 快速批量删除软回车 点击菜单栏中的"编辑"→"替换" ,在"查找内容"里面输入^l, "替换为"里面不输入任何字符,然后点"全部替换" ,就可以删除

word文档里如何快速批量删除英文内容而保留中文?

  很多人在复制网上文章的时候,有时候会连同英文内容一起复制下来,出现此情况多以中英文对照阅读居多,但是英文内容对我们并不需要,所以大家都想只保留下中文即可,如果是一句句的删除,对于文字内容较少的文章还好,但是如果是长篇大论这种方法显然不够科学,那么有没有高效一点的办法呢?下面小编为大家带来了word文档里如何快速批量删除英文内容而保留中文方法介绍,希望能对大家有所帮助! 步骤 首先,我们在电脑上打开word办公软件,然后在空白文档输入带有中英文内容的一段文字,如图; 此时在工具栏"开始&quo

Word教程 如何快速批量删除图片

  今天的word教程就是教大家如快速批量删除图片的,如果也想知道操作的方法,那就进来学习咯,以下是详细的操作步骤: 1.启动Word2007,打开插入有图片的文档,按下Ctrl+H键,打开查找与替换对话框. 2.在替换标签中,先点击更多按钮,下方会出现搜索选项和替换,我们点击特殊格式. 3.右侧出现菜单,选择图形. 4.此时查找内容中会自动填充^g,替换为中不写入任何东西,单击全部替换按钮,完成替换之后会告诉你结果. 5.再次回到Word文档看看,图片已经一次性删除干净了,这样比我们手动一张张

新手站长浅谈快速批量写作软文的技巧

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 很多站长都喜欢给自己的网站做软文推广,但长期写作的时候偶尔不知道应该写些什么.今天我给大家分享的就是众多软文类型中的一种,即炮制软文,他能让我们学会如何快速批量的写作软文,比较合适大部分的站长,希望通过本文能让大家更多的了解其更多的写作特点,同时也欢迎大家指正. 准定义,会模仿:简单来讲,炮制软文就是轻松.快速批量的一种写作方式.它对网站的原

探讨SQL Server批量向数据库插入数据的性能优化问题

昨天下午快下班的时候,无意中听到公司两位同事在探讨批量向数据库插入数据的http://www.aliyun.com/zixun/aggregation/14109.html">性能优化问题,顿时来了兴趣,把自己的想法向两位同事说了一下,于是有了本文. 公司技术背景:数据库访问类(xxx.DataBase.Dll)调用存储过程实现数据库的访问. 技术方案一: 压缩时间下程序员写出的第一个版本,仅仅为了完成任务,没有从程序上做任何优化,实现方式是利用数据库访问类调用存储过程,利用循环逐条插入.

SQL2008使用CTE递归查询批量插入500万数据

原文 http://www.cnblogs.com/wjmo520/archive/2013/04/27/3046795.html 一直都使用一般的批量循环插入方法 ,可这效率也太慢了,插入500万条数据执行所需的时间远远超过10分钟.于是度娘了一下 发现可以使用CTE进行递归循环插入 以下是亲测的数据: 1.创建表: CREATE TABLE Customers (CustomerID INT primary key identity(1,1), CustomerNumber CHAR(4),

《Excel 职场手册:260招菜鸟变达人》一第 3 招 怎样快速输入几十万相同数据

第 3 招 怎样快速输入几十万相同数据 以20万行为例,要在空白工作表中批量输入20万行相同的数据,先在名称框输入单元格地址A1:A200000,如图1-1-13所示,按Enter键,在任意单元格输入数据,再按组合键[Ctrl + Enter],就可以批量填充A1到A200000为相同的数据. 如果工作表中A列有数据,需要在B列输入同样行数的相同数据,只需在B1单元格输入数据,点击单元格右下角的黑色+双击就可以.