forkjoinpool 弊端_oracle数据库分页查询sql

forkjoinpool 弊端_oracle数据库分页查询sql使用forkjoin框架分页查询所有数据的例子importio.swagger.annotations.ApiOperation;importlombok.AllArgsConstructor;importlombok.extern.slf4j.Slf4j;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.context.annotation.PropertySou

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

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

使用forkjoin框架分页查询所有数据的例子

import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.RecursiveTask;
@RestController
@RequestMapping("/test2")
@PropertySource("classpath:/application.properties")
@Slf4j
public class ForkJoinPollController { 

@Autowired
private SyncPersonInfoServiceImp syncPersonInfoService;
@ApiOperation("测试forkJoinPoll")
@GetMapping("/forkJoinPoll")
public void forkJoinPoll(){ 

log.info("forkJoinPoll start...");
ForkJoinPool pool = new ForkJoinPool(Runtime.getRuntime().availableProcessors() * 2);
// 总页数,提前查询出来,数据量不大就不用拆任务
int total = syncPersonInfoService.getTotal();
int totalPage = (int)Math.ceil(total * 1.0 / IrdsConstant.PAGE_SIZE_MAX);
SumTask innerFind = new SumTask(1, totalPage);
pool.invoke(innerFind);
List<VChrHkws> join = innerFind.join();
pool.shutdown();
log.info("forkJoinPoll end,size={}",join.size());
}
@AllArgsConstructor
public class SumTask extends RecursiveTask<List<VChrHkws>> { 

private final Integer fromIndex;
private final Integer toIndex;
@Override
protected List<VChrHkws> compute() { 

// 如果任务足够小就触发任务
if (toIndex - fromIndex < 2) { 

List<VChrHkws> list = new ArrayList<>();
for (int pageNo = fromIndex; pageNo <= toIndex; pageNo++) { 

ApiPageListData<VChrHkws> pageData = syncPersonInfoService.getPageListData(pageNo, IrdsConstant.PAGE_SIZE_MAX);
// 查询数据库返回值
list.addAll(pageData.getList());
}
return list;
} else { 

// 如果任务大于阈值,就分裂成两个子任务计算
int mid = (fromIndex + toIndex) / 2;
SumTask left = new SumTask(fromIndex, mid);
SumTask right = new SumTask(mid + 1, toIndex);
invokeAll(left, right);
List<VChrHkws> join = left.join();
join.addAll(right.join());
return join;
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

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

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

(0)


相关推荐

  • 网站防止攻击

    网站防止攻击1、什么是XSSXSS又叫CSS(CrossSiteScript),跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常呼略其危害性。跨站脚本攻击最大的魅力是通过HTML注入劫持用户的浏览器,任意构造用户当前浏览的HTM

  • asp.net 中mvc return Content(“ok”) ;return View() return JSon()区别

    asp.net 中mvc return Content(“ok”) ;return View() return JSon()区别

  • 5g端到端网络切片技术_5G网络切片的特征

    5g端到端网络切片技术_5G网络切片的特征1、网络切片的一些概念网络切片(Slice):基于客户化需求,可以被设计、部署、维护的逻辑网络,旨在满足特定的客户、业务、商业场景的业务特点及商业模式。网络切片实例(E2ESliceInstance-ESI):网络切片实例(Instance)是一个临时逻辑网络,跨多个技术域,包含:(1)组网络:”功能”(Function)即虚拟网元(终端、接入网、回传网、核心网、业务网络)及网管系统对应的资源;(2)存储、运算;(3)连接关系。2、网络切片原因:未来业务需求差异

  • 添加音乐的HTML标签是,添加背景音乐的html标签是哪个[通俗易懂]

    添加音乐的HTML标签是,添加背景音乐的html标签是哪个[通俗易懂]添加背景音乐的html标签是哪个发布时间:2020-11-1710:26:08来源:亿速云阅读:120作者:小新了解添加背景音乐的html标签是哪个?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!添加背景音乐的html标签是,bgsound是用以插入背景音乐,但只适用于IE,在netscape和firefox中并不…

  • 使用VirtualBox + Vagrant打造统一的开发环境

    使用VirtualBox + Vagrant打造统一的开发环境

    2021年10月28日
  • 2020vue面试题及答案_人际关系面试题及答案

    2020vue面试题及答案_人际关系面试题及答案1、虚拟DOM中key的作用:key是虚拟DOM对象的标识,当状态中的数据发生变化时,Vue会根据【新数据】生成【新的虚拟DOM】,随后Vue进行【新虚拟DOM】的差异比较,比较规则如下:2、key的对比规则:1、旧虚拟DOM中找到了与新虚拟DOM相同的key:若虚拟DOM中内容没变,直接使用之前的真实DOM若虚拟DOM中内容变了,则生成新的真实DOM,随后替换掉页面中之前的真实DOM………

发表回复

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

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