zoukankan      html  css  js  c++  java
  • 批量更新 分割list 多线程处理

    @Test
        public void testThreadPoolSplit() {
            List<Integer> ids = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 9, 8, 76, 41, 42, 43, 44);
            batchUpdate(ids);
        }
    
        public void batchUpdate(List<Integer> skuIds) {
            ExecutorService executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() + 1);
            if (CollectionUtils.isNotEmpty(skuIds)) {
                int splitMaxNum = 7;
                //大量更新,超过20个,考虑多线程处理;
                if (skuIds.size() > splitMaxNum) {
                    try {
                        for (int i = 0; i < skuIds.size(); i = i + splitMaxNum) {
                            List<Integer> newPurSkuList = skuIds.stream().skip(i).limit(splitMaxNum).collect(Collectors.toList());
                            executor.execute(() -> updateSku(newPurSkuList));
                        }
                        executor.shutdown();
                    } catch (Exception e) {
                        log.warn("批量更新Sku 失败");
                    }
                } else {
                    updateSku(skuIds);
                }
            }
        }
    
        public void updateSku(List<Integer> skuList) {
            System.out.println(JSONObject.toJSONString(skuList));
        }
    //使用google guava对List进行分割
    
    //使用guava对list进行分割
    List<User> users = userService.findAll();
    //按每50个一组分割
    List<List<User>> parts = Lists.partition(users, 50);
    parts.stream().forEach(list -> {
        process(list);
    });
    //common collections 
    
    List<Integer> intList = Lists.newArrayList(1, 2, 3, 4, 5, 6, 7, 8);
    List<List<Integer>> subs = ListUtils.partition(intList, 3);
    多想,多试
  • 相关阅读:
    UML 类图基础知识记录
    装饰器模式
    Hive 安装配置记录
    HBase 建表新增数据记录
    HBase 安装过程记录
    lucene 索引参数配置类IndexWriterConfig记录
    lucene 专业名词作用整理
    socket、webService、RMI ?
    Lucene 对文档打分的规则整理记录
    lucene 检索流程整理笔记
  • 原文地址:https://www.cnblogs.com/junyi0120/p/11695086.html
Copyright © 2011-2022 走看看