ForkJoin调用接口

ForkJoin调用接口ForkJoinPool newForkJoinP Runtime getRuntime availablePro 2 ForkJoinTask Map Long InfoVO gt forkJoinTask ThreadPoolMa infoForkJoin submit newPriceTask skuIds 0 skuIds size infoSoaServi Map Long InfoVO

 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/216697.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午11:16
下一篇 2026年3月18日 上午11:16


相关推荐

  • 视觉SLAM方案整理及硬件选型调研

    视觉SLAM方案整理及硬件选型调研目前个人初步接触视觉SLAM开发相关工作,现在就相关学习做一些总结以加深个人理解,同时也希望能给其他网友提供一些帮助。这篇文章主要是对之前关于视觉SLAM方案和硬件选型调研的总结,文中有关的视频是从youtube上收集的,上传到了百度网盘(),有需自取。由于个人能力有限,不保证文中说法的准确性,更多的是互相交流学习。一、SLAM的引入1.1定义SLAM是Simu……

    2022年10月1日
    5
  • Werkzeug_@mapkey注解

    Werkzeug_@mapkey注解在Python中,除了线程还有一些其他的并发方法如协程。所以在一个WSGI服务中,我们不能保证所有的请求都是以线程的形式存在。另外一种情况是当前请求复用了之前请求的线程,所以上一个请求的数据留在了当前请求的ThreadLocal对象中。Werkzeug提供了自己的Local数据存储werkzeug.local。其提供了与ThreadLocal近似的功能,但是可以运行线程和greenlet中…

    2026年4月15日
    5
  • 微信小程序列表页面_微信发现没有小程序

    微信小程序列表页面_微信发现没有小程序尽量不要用缓存去写效果展示:点击编辑,进入编辑页第一页编辑按钮:<viewclass=”bj-btn”bindtap=”redactGroup”data-id=”{{传递的id}}”>编辑</view>redactGroup方法:options.currentTarget.dataset.前面自定义的名字redactGroup(options){letid=options.currentTarget.dataset.id;…

    2022年8月19日
    16
  • 算法模型定义介绍

    算法模型定义介绍1.马尔科夫模型1.1马尔科夫过程  马尔可夫过程(Markovprocess)是一类随机过程。它的原始模型马尔可夫链。已知目前状态(现在)的条件下,它未来的演变(将来)不依赖于它以往的演变(过去)。  一个马尔科夫过程就是指过程中的每个状态的转移只依赖于之前的n个状态,这个过程被称为1个n阶的模型,其中n是影响转移状态的数目。最简单的马尔科夫过程就是一阶过程…

    2022年6月23日
    34
  • C语言魔塔游戏[通俗易懂]

    C语言魔塔游戏[通俗易懂]很早就很想写这个,今天终于写完了。游戏截图:编译环境:VS2017下面我来介绍一下游戏的主要功能和实现方式首先是玩家的定义,使用结构体,这个名字是可以自己改变的structgamerole{ charn…

    2022年5月20日
    40
  • Spring @Aspect、@Before、@After 注解实现 AOP 切面功能

    Spring @Aspect、@Before、@After 注解实现 AOP 切面功能SpringAOP 注解概述 1 Spring 的 AOP 功能除了在配置文件中配置一大堆的配置 比如切入点 表达式 通知等等以外 使用注解的方式更为方便快捷 特别是 Springboot 出现以后 基本不再使用原先的 beans xml 等配置文件了 而都推荐注解编程 Aspect 切面声明 标注在类 接口 包括注解类型 或枚举上 Pointcut 切入点声明 即切入到哪些目标类的目标方法 value 属性指定切入点表达式 默认为 用于被通知注解引用

    2026年1月17日
    3

发表回复

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

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