zoukankan      html  css  js  c++  java
  • 大数据拆分处理方式

    思路:
    1:参考分页方式将数据拆成指定大小线程数
    2:在每个独立的线程中去读取数据并处理数据
    步骤一实现

    public class IndexIntiTools {
        
        public static AtomicInteger runflag=new AtomicInteger();
    
        //用于测试
        public static List<Object>  syncList=new CopyOnWriteArrayList<Object>();
        private static int idxThreadCount = 10;
    
        private static Executor ex = Executors.newFixedThreadPool(idxThreadCount);
    
        /**
         * 构建索引
         * @param hql
         * @param size
         */
        public static void build(String hql, int size) {
            int pagecount = idxThreadCount;
            int count = size / pagecount;
            int mod = size % pagecount;
            List<Runnable> runList = new ArrayList<Runnable>(pagecount);
            IndexExecutor idxExecutor;
            for (int i = 0; i < pagecount; i++) {
                if (i == (pagecount - 1)) {
                    idxExecutor = new IndexExecutor(hql, i * count, count + mod);
                } else {
                    idxExecutor = new IndexExecutor(hql, i * count, count);
                }
                runList.add(idxExecutor);
            }
            for (Runnable runnable : runList) {
                runflag.incrementAndGet();
                ex.execute(runnable);
            }
        }
    
    }

    步骤二实现

    public class IndexExecutor implements Runnable{
        
        private static final Log log = LogFactory.getLog(IndexExecutor.class);
        private int start;
        private int limit;
        private String hql;
        public IndexExecutor(String hql,int start, int limit) {
            this.hql=hql;
            this.start = start;
            this.limit = limit;
        }
    
        @Override
        public void run() {
            log.info("hql:"+hql+",start:"+start+",limit"+limit);
            //查询数据库(hql,start,limit);
            log.info(list);
            IndexIntiTools.syncList.addAll(list);
            IndexIntiTools.runflag.decrementAndGet();
        }
    
    
    }
  • 相关阅读:
    攻防世界wp--web robots
    kubernetes二: kubernetes 重要组件安装和集群管理
    kibana配置页面跳转
    二进制安装的k8s添加新的node节点
    分布式和微服务的区别
    kubernetes一: 二进制安装k8s集群
    kibana导入导出dashborad
    elk 创建一个只读用户
    x-pack模式下修改es集群密码
    docker基础命令
  • 原文地址:https://www.cnblogs.com/xiongmaotailang/p/5239012.html
Copyright © 2011-2022 走看看