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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JAVA遍历数组的三种方法_如何遍历一个数组

    JAVA遍历数组的三种方法_如何遍历一个数组我们也了解Java也已经很久了,那今天小编想问大家是否知道java遍历数组的方式有哪些?是不是内心已经已经有答案了?让就跟着小编的步伐一起看看吧。1.for循环遍历这是最基本的遍历方式通常遍历数组都是使用for循环来实现。遍历一维数组很简单,遍历二维数组需要使用双层for循环,通过数组的length属性可获得数组的长度。2.Arrays的toString方法debug快速查看方法利用Array…

    2022年9月19日
  • 《数据结构》C语言版 (清华严蔚敏考研版) 全书知识梳理

    《数据结构》C语言版 (清华严蔚敏考研版) 全书知识梳理写在前面:恰逢期末复习,用了几天时间结合老师勾画的重点以及课件教材等,将全书重要内容做了个大整合。一方面便于自己复习记忆,另一方面po出来让更多需要的人也可以做个参考。同类梳理:《数据库系统概论》第五版(王珊版)全书知识梳理《计算机组成原理》第五版(唐朔飞考研版)全书知识梳理《数据结构》C语言版(清华严…

    2022年6月29日
  • 如何设置,使IntelliJ IDEA智能提示忽略大小写

    如何设置,使IntelliJ IDEA智能提示忽略大小写

    2022年3月2日
  • 机器学习之朴素贝叶斯分类算法

    机器学习之朴素贝叶斯分类算法一、数学知识相关1.独立事件–前提2.条件概率3.全概率公式4.贝叶斯公式5.朴素贝叶斯公式其中:P(A)叫做A事件的先验概率,即一般情况下,认为A发生的概率。 P(B|A)叫做似然度,是A假设条件成立的情况下发生B的概率。 P(A|B)叫做后验概率,在B发生的情况下发生A的概率,也就是要求的概率。P(B)叫做标准化常量,即在一般情况下,认为B…

    2022年10月15日
  • Petalinux2019.1详细安装[通俗易懂]

    Petalinux2019.1详细安装[通俗易懂]1、首先安装虚拟机,VMware2、安装UBUNTU,ubuntu-18.04.1-desktop-amd64.iso,版本必须是这个,和petalinux-v2019.1-final-installer.run版本对应。3、安装虚拟机完成后,在windos和linux之间建立共享文件夹,使之传输文件更简单。(1)首先取得管理员权限首先输入用户密码然后设置管理员密码123456su…

    2022年9月11日
  • centos7 防火墙开放svn通过

    centos7 防火墙开放svn通过

    2022年3月8日

发表回复

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

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