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;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Spatial Transformer Network_transgression

    Spatial Transformer Network_transgression导读上一篇通俗易懂的SpatialTransformerNetworks(STN)(一)中,我们详细介绍了STN中会使用到的几个模块,并且用pytorch和numpy来实现了他们,这篇文章我们将会利用pytorch来实现一个MNIST的手写数字识别并且将STN模块插入到CNN中STN关键点解读STN有一个最大的特点就是STN模块能够很容易的嵌入到CNN中,只需要进行非常小的修改即可。上一篇文章我们也说了STN拥有平移、旋转、剪切、缩放等不变性,而这一特点主要是依赖θ\thetaθ参数来实现的。刚开

  • sstream简析

    sstream简析3月20日关于C++中的sstream类C++程序把输入和输出看作字符流,输入时,程序从输入流中提取字节,输出时,程序把字节插入到输出流中。对于输入输出流既可以来自标准输入输出设备,也可以来自文件,甚至可以来自String对象,三者分别属于iostreamfamily、fstreamfamily、sstreamfamily。对于iostream类,就是我们通常所说的标

  • ant安装配置使用介绍及eclipse中使用

    ant安装配置使用介绍及eclipse中使用一、安装ant到官方主页http://ant.apache.org下载新版(目前为Ant1.8.1)的ant,得到的是一个apache-ant-1.8.1-bin.zip的压缩包。将其解压到你的硬盘上,例如:C:\apache-ant-1.8.1。ant是java编写的,具有跨平台特点。.需要安装JDK,二、配置环境变量window中设置ant环境变量:配置环境变量

  • hdu 4661 Message Passing(木DP&amp;组合数学)

    hdu 4661 Message Passing(木DP&amp;组合数学)

  • phpstorm有红波浪线,怎么找到语法错误的地方

    phpstorm有红波浪线,怎么找到语法错误的地方

  • java中int转long

    java中int转longpackagepid69;publicclassSolution{ publicstaticintmySqrt(intx){ intresult=0; if(x==0||x==1){ returnx; }else{ for(inti=0;i<=x/2;i++){ inta=i*i; //防止溢出,务必注意右边需…

发表回复

您的电子邮箱地址不会被公开。

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