java多线程处理数据

在进行,处理大批量数据,程序执行缓慢,这时候就可以使用多个线程, 同时对数据处理,此文章只作为借鉴,如有不足之处欢迎指出.废话不多说,上代码↓

 //构建线程池设置线程池的最大数量,线程池最大存活数量,线程池最大空闲时间,时间单位,线程等待队列,线程创建工厂
    ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(10, 10, 200, TimeUnit.SECONDS, new     ArrayBlockingQueue<java.lang.Runnable>(2), new ThreadPoolExecutor.DiscardOldestPolicy());
    
    Justice justice = ApplicationContext.getBean(Justice.class);
    //获取所操作的数据list集合
    List<Entity> list = entityManager.list(condition);
    //获取当前要操作的数据总数量
    int lenth = list.size();
    //设置线程数量手
    int threadNumber = 10;
    //分配每个线程执行的数量
    int listSize = lenth / threadNumber;
    List<Entity> subList = null;

    for (int i = 0; i < threadNumber; i++) {
     //如果是最后一个线程,截取当前的执行的数量,到总数据的末尾
        if (i == threadNumber - 1) {
            subList = list.subList(i * listSize, lenth);
        } else {
        //否则默认按照每个大小的执行
            subList = list.subList(i * listSize, (i + 1) * listSize);
        }
        //线程池执行text的run方法
        threadPoolExecutor.execute(new text(subList, justice));
    }



 public class text implements java.lang.Runnable {
        List<Entity> list;

        Justice justice;

        text(List<Entity> list, JusticeBureauFilter justiceBureauFilterOne) {
            this.list = list;
            this.justiceBureauFilterOne = justiceBureauFilterOne;
        }


        public void carried() {
            for (Entity entity : list) {
                dataDown(entity.getId(), entity.getTypeId(), this.justiceBureauFilterOne);
            }

        }

        @Override
        public void run() {
            carried();
        }
    }

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值