forkjoin使用_forkjoin与线程池区别

forkjoin使用_forkjoin与线程池区别ForkJoinPoolinfoForkJoinPool=newForkJoinPool(Runtime.getRuntime().availableProcessors()*2);ForkJoinTask<Map<Long,InfoVO>>forkJoinTask=ThreadPoolManage.infoForkJoinPool.submit(newPriceTask(skuIds,0,skuIds.size(),infoSoaService));

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺



ForkJoinPool infoForkJoinPool = new ForkJoinPool(Runtime.getRuntime().availableProcessors() * 2);

ForkJoinTask<Map<Long,InfoVO>> forkJoinTask = ThreadPoolManage.infoForkJoinPool.submit(new PriceTask(skuIds, 0, skuIds.size(),infoSoaService));

Map<Long,InfoVO> infoVOMap = forkJoinTask.join();


 /** * 多任务查询 */
    public class PriceTask extends RecursiveTask<Map<Long,InfoVO>> { 
   
        /** * sku集合 */
        private Set<Long> skuIds;
        /** * */
        private InfoSoaService infoSoaService;
        /** * 开始 */
        private int start;
        /** * 最大 */
        private int end;
        /** * 单次最多查询sku数量 */
        static final int THRESHOLD = 20;

        public PriceTask(Set<Long> skuIds, int start, int end,InfoSoaService infoSoaService) { 
   
            this.skuIds = skuIds;
            this.start = start;
            this.end = end;
            thisinfoSoaService = infoSoaService;
        }

        @Override
        protected Map<Long, InfoVO> compute() { 
   
            if (end - start <= THRESHOLD) { 
   
                List<Long> skuList = new ArrayList<>(skuIds);
                Response<Map<Long, InfoVO>> bySkuIds = infoSoaService.getInfoBySkuIds(buildCaller(), new HashSet<>(skuList.subList(start, end)));
                return new HashMap<>(bySkuIds.getData());
            }
            int middle = (end + start) / 2;
            PriceTask left = new PriceTask(skuIds, start, middle, infoSoaService);
            PriceTask right = new PriceTask(skuIds, middle, end, infoSoaService);
            invokeAll(left, right);
            Map<Long,InfoVO> resultMap = new HashMap<>();
            Map<Long, InfoVO> infoVOLeftMap = left.join();
            Map<Long, InfoVO> infoVORightMap = right.join();
            resultMap.putAll(infoVOLeftMap);
            resultMap.putAll(infoVORightMap);
            return resultMap;
        }
    }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/191302.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 1155针低功耗cpu有哪些_2011针低功耗cpu

    1155针低功耗cpu有哪些_2011针低功耗cpu一、“A”的含义:Pentium4处理器有Willamette、Northwood和Prescott三种不同核心。其中Willamette核心属于最早期的产品,采用0.18微米工艺制造。。。。二、“B”的含义:同样频率的产品,在更高的外频下可具备更高的前端总线,因此性能也更高。为此Intel在提升CPU频率的同时,也在不断提高产品的前端总线。于是从可以支持533MHzFSB的845E等主板上市…

    2022年9月20日
    0
  • 圆周率1千亿位_圆周率十亿位

    圆周率1千亿位_圆周率十亿位展开全部3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852…

    2022年9月13日
    0
  • C#实现QQ(高仿版)聊天窗口

    C#实现QQ(高仿版)聊天窗口一.编程思想(1).考虑聊天功能的实现,文本的获取以及显示;(2).窗体制作时需要的控件;(3).考虑是否可以发送空格以及空字符;(4).刚开始进入界面时焦点的位置;(5).获取输入内容鼠标光标跟踪最后一个字符处;(6).窗口抖动依赖位置的变化进行实现;(6).点击按钮对应的触发事件;二.代码的实现1.需要的控件简介:TextBox:允许用户输入文本,并提供多行编辑和密码字符掩……

    2022年7月24日
    6
  • 网站开发团队成员(项目团队)

    1.项目带头人(Boss):通常是项目的发起人,为项目规划企业战略目标,对项目的成败负最终责任。2.项目经理:这个不用说了是项目当然需要PM,建议是通过PMP认证的项目经理,主要负责项目各个过程的管理,以及过程优化降低开发风险。 3.系统架构师:架构师不单单是技术架构,还

    2022年4月10日
    134
  • Diablo II中的各种hacks

    Diablo II中的各种hacksGamehacks,也就是通常所说的游戏软件。在网络游戏时代,也许是因为针对传奇这类游戏的软件大都利用WPE之类的抓包工具来制作,因此hacks又叫外挂。不过Diablo的hacks绝大多数是和游戏代码紧密结合在一起的,也许应该叫内挂才对。DiabloIILOD(以下简称D2X)中的hacks大概可分为exploit、bot和mod三大类。exploit即漏洞,就是利用游戏设计上的缺陷或者B…

    2022年6月2日
    52
  • LDAP概述

    LDAP概述

    2021年8月29日
    98

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号