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();
        }
    
    
    }
  • 相关阅读:
    关于销售订单状态(转载)
    SAP VA02 为销售订单添加附件
    销售订单行项目的装运点字段确认规则
    SAP 没有找到物料编号转换的设置
    ABAP动态 I TAB
    ABAP
    记住一个道理:只要自己变优秀了,其他的事情才会跟着好起来。
    《将博客搬至CSDN》
    Python3命名规范
    Linux下批量杀掉 包含某个关键字的 程序进程
  • 原文地址:https://www.cnblogs.com/xiongmaotailang/p/5239012.html
Copyright © 2011-2022 走看看