java后台开多线程加快任务执行速度

业务场景

最近工作中遇到一个问题,在做统计工作的时候,由于之前设计的表的数据字段不是很合理,导致现在统计有点耗时。需要循环很多遍来计算,这样调用数据库时间就是N次数*每次执行时间。显然不满足客户的要求的。

解决办法

java线程中 开多个线程来执行任务,主线程等待这些线程都执行完毕,将结果汇总返回给客户端。

具体实现

//普通版start
for (int i = 0; i < list.size(); i++) {
    String code = list.get(i).get("deptCode").toString();
    String name = list.get(i).get("deptName").toString();
    int total = indexMapper.getQuxianTotal(code);
    map.put(name,total);
}
//普通版end  经测试 本系统耗时10s
//多线程版start
int size = list.size();
if (size > 0) {
    final CountDownLatch latch = new CountDownLatch(size);
    for (int i = 0; i < size; i++) {
        String code = list.get(i).get("deptCode").toString();
        String name = list.get(i).get("deptName").toString();
        new Thread(
                new Runnable() {
                    @Override
                    public void run() {
                        int total = indexMapper.getQuxianTotal(code);
                        map.put(name, total);
                        System.out.println("子线程执行");
                        latch.countDown();
                    }
                }
        ).start();
    }
    try {
        latch.await();
        System.out.println("主线程执行");
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}
//多线程版 end 经测试 本系统耗时 2.7s

总结

开发机执行的时间来看,合适的使用多线程,可以加快任务执行速度。

参考博文

https://blog.csdn.net/wb_zjp2…

原文 

https://segmentfault.com/a/1190000022354553

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » java后台开多线程加快任务执行速度

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址