JAVA 多线程处理list

//此处查询你的数据
List> channelMapList = xxxxxxxxx(此处查询你的数据);
if (channelMapList != null && channelMapList.size() > 0) {
    //每500条数据开启一个线程
    int threadSize = 500;
    //总数据条数
    int dataSize = channelMapList.size();
    //线程数
    int threadNum = dataSize/threadSize+1;
    //定义标记,过滤threadNum为整数
    boolean special = dataSize%threadSize==0;
    //创建一个线程池(Executors此处可以自己创建一个线程池)
    ExecutorService exec = Executors.newFixedThreadPool(threadNum);
    //定义一个任务集合
    List> tasks = new ArrayList>();
    Callable task = null;
    List> cutList = null;

    //确定每条线程的数据
    for(int i=0;i> mapList = cutList;
        task = new Callable() {
            @Override
            public Boolean call() throws Exception {
                if(null!=mapList&&mapList.size()>0){
                    for(Map map : mapList){
                        //调用业务方法
                        
                    }
                }
                return true;
            }
        };
        tasks.add(task);
    }

    try{
        exec.invokeAll(tasks);
    }catch (Exception e){
        e.printStackTrace();
    }
    //关闭线程
    exec.shutdown();
}

你可能感兴趣的:(java,java,list)