处理List采用并行流处理时,通过ForkJoinPool来控制并行度失控的问题

news2024/11/15 21:29:06

在使用parallelStream进行处理list时,如不指定线程池,默认的并行度采用cpu核数进行并行,这里采用ForJoinPool来控制,但循环中使用了redis获取key时,出现失控。具体上代码。

@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
@Slf4j
public class ForkJoinPoolTest {
    @Resource
    RedisUtils redisUtils;
    @Test
    public void test() {
        ForkJoinPool forkJoinPool = new ForkJoinPool(2);
        List<Integer> fileList = new ArrayList<>();
        for (int i = 1; i < 100; i++) {
            fileList.add(i);
        }
        List<String> result = forkJoinPool.submit(() -> detail(fileList)).join();
    }
    public List<String> detail(List<Integer> fileList){
        return fileList.parallelStream().map(path-> {
            String ocrJson = (String) redisUtils.get("ocr:");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            log.info("第"+path+"张");
            return "第"+path+"张";
        }).collect(Collectors.toList());
    }
}

打印结果:

在这里我已经用ForkJoinPool forkJoinPool = new ForkJoinPool(2);来指定了parallelStream的线程数,但是这里并没有控制住,于是找原因定位到了redis获取key这行代码,将该代码注释后,就可控制parallelStream的并行度。上代码:

//String ocrJson = (String) redisUtils.get("ocr:");
String ocrJson = "";

这时控制台的打印就为:

在这里,redis采用的是lettuce客户端,经排查可能是因为lettuce是异步客户端,而影响了parallelStream的并行度,具体是因为什么原因导致,待排查。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2113649.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenFeign的使用(一)

OpenFeign的定义 OpenFeign是一个声明式的Web服务客户端&#xff0c;它简化了编写Web服务客户端的过程&#xff0c;使得微服务间的通信更加简单和灵活。它主要作用于帮助开发者方便地调用远程服务&#xff0c;让远程调用像本地方法调用一样简单。 事实上&#xff0c;远程调用的…

共享单车轨迹数据分析:以厦门市共享单车数据为例(一)

共享单车数据作为交通大数据的一个重要组成部分&#xff0c;在现代城市交通管理和规划中发挥着越来越重要的作用。通过对共享单车的数据进行深入分析&#xff0c;城市管理者和规划者能够获得大量有价值的洞察&#xff0c;这些洞察不仅有助于了解城市居民的日常出行模式&#xf…

入职国企3个月,还没碰过代码,很焦虑。。

国企 日常逛脉脉&#xff0c;看到名为「入职后发现提升很慢怎么办」的话题。 本以为是正儿八经的讨论帖&#xff0c;结果点开&#xff0c;还是有凡尔赛&#xff0c;不愧是人均 P8 交流地 &#x1f923;&#x1f923; 一位网友表示&#xff1a;自己入职了国企三个月&#xff0c;…

spring cloud gateway配置

1:Intellij 新建项目 spring-cloud-gateway 2:pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLoca…

正规式与有限自动机例题

答案&#xff1a;D 知识点&#xff1a; 正规式 正规集 举例 ab 字符串ab构成的集合 {ab} a|b 字符串a,b构成的集合 {a,b} a^* 由0或者多个a构成的字符串集合 {空,a,aa,aaa,aaaa} (a|b)^* 所有字符a和b构成的串的集合 {空,a,b,ab,aab,aba,aaab} a(a|b)^* 以a为…

145-Linux权限维持Rootkit后门Strace监控Alias别名Cron定时任务

参考 【权限维持】Linux&Rootkit后门&Strace监控&Alias别名&Cron定时任务_alias lsalerts(){ ls $* --colorauto;python -c "-CSDN博客 参考 FlowUs 息流 - 新一代生产力工具 权限维持-Linux-定时任务-Cron后门 利用系统的定时任务功能进行反弹Shell 1…

电脑WLan无线网连上没网络的问题解决方法

在公司的酒店&#xff0c;网络很差&#xff0c;每到周末网就很差&#xff0c;昨天网上还能上头条写文章&#xff0c;终于&#xff0c;今天浏览器都上不去了&#xff0c;咋回事呢&#xff1f; 明明手机能上网呀&#xff0c;明明电脑显示无线网已连接&#xff0c;没一点问题呀&a…

【语音告警】博灵智能语音报警灯JavaScript循环播报场景实例-语音报警灯|声光报警器|网络信号灯

功能说明 本文将以JavaScript代码为实例&#xff0c;讲解如何通过JavaScript代码调用博灵语音通知终端 A4实现声光语音告警。主要博灵语音通知终端如何实现无线循环播报或者周期播报的功能。 本代码实现HTTP接口的声光语音播报&#xff0c;并指定循环次数、播报内容。由于通知…

『功能项目』战士的A键连击【33】

我们打开上一篇32更换URP场景的项目&#xff0c; 本章要做的事情是切换为战士的连击动画&#xff0c;主要实现的是做了一个战士的动画行为&#xff0c;当按键盘A的时候播放一次右手攻击动画&#xff0c;在1秒内再次按A键播放左手攻击动画&#xff0c;再在1秒内按A键播放右手攻击…

Mysql 数据库免费使用

目录 前言 详细步骤 总结 前言 由于工作需要现在打算学习WPF开发&#xff0c;因为需要访问mysql数据&#xff0c;但是又不想在自己电脑上安装。于是就上网试着查了下&#xff0c;发现果然有提供免费数据库服务的网站。nice&#xff01;所以就打算写一篇文章详细记录一下&…

上海网站设计-网站手机端制作

随着移动互联网的迅猛发展&#xff0c;越来越多的人通过手机上网&#xff0c;这使得网站手机端的设计和制作变得尤为重要。在这种背景下&#xff0c;上海的网站设计行业迎来了新的机遇与挑战。 首先&#xff0c;网站手机端制作的必要性不容忽视。根据统计数据显示&#xff0c;手…

从零开始构建大语言模型并进行微调:全面指南

要从0开始搭建并训练一个大语言模型&#xff08;LLM&#xff09;&#xff0c;涉及到多个步骤和资源&#xff0c;包括理论理解、工具使用、数据准备、模型训练与微调。以下是一个从基础到应用的指南&#xff0c;帮助你理解并逐步实现这一目标。 1. 理解基础概念 在开始搭建大语…

Python的math库——常用数学函数全解析

文末赠免费精品编程资料~~ 一、math模块简介 math 是 Python 内置的一个标准库&#xff0c;它包含了许多执行复杂数学运算的函数&#xff0c;如三角函数、对数函数、指数函数等。 二、常用函数详解与示例 基本数学运算 math.sqrt(x): 计算平方根。 import math# 计算平方根…

Day-07-QT中如何引入图片替换控件

一、引入步骤 在引用之前可以在自己项目保存的地址下面创建一个文件夹&#xff0c;专门用来保存图片 1、添加一个资源文件 2、选择文件类型 3、 点击AddFile添加要用的图片 4、添加完后CtrlS保存 5、选择要替换的控件&#xff0c;改变样式表 6、选择border-image 7、选中图…

SQL治理经验谈:索引覆盖

背景 explain - format id: query sql 的标识idSELECT_TYPE: 查询的类型&#xff08;SIMPLE/PRIMARY/SUBQUERY/DERIVED/UNION/UNION RESULT/DEPENDENT SUBQUERY/DEPENDENT UNION&#xff09;table: 表名Partitions: 表连接的分区数type: 查询中使用的访问类型&#xff08;syste…

电脑主机内存

在计算机的组成结构当中内存是非常重要的一部分&#xff0c;它用来存储程序和数据。对于计算机来说有了内存才能保证计算机的正常工作。 内部存储器就是我们所说的内存条&#xff0c;一般是用来即时存储数据。不做数据的长期保留。 外部存储器就是我们常说的固态或者硬盘。固态…

电脑点击关机之后,又自动重启开机了。根本就关不了?

前言 有个小姐姐说&#xff0c;她家的电脑好生奇怪&#xff1a;点击【关机】按钮之后&#xff0c;电脑提示【正在关机】&#xff0c;过了几秒&#xff0c;电脑又自动开机了…… 好家伙&#xff01;也就是说关机和重启根本就没区别&#xff0c;电脑完全无法断电。 最后忍无可…

C++list类介绍和常用接口说明(超全超详细)

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 Clist类介绍和常用接口说明(超全超详细) 收录于专栏【C语法基础】 本专栏旨在分享学习C的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录…

推荐一款强大的OCR软件,请低调使用!

今天给大家分享一款开源的OCR识别软件&#xff0c;可以提升大家的办公效率——Umi-OCR&#xff0c;支持window​和Linux系统。 Umi-OCR支持提取一张图片或者多张图片的信息&#xff0c;只需通过右边的功能页选择相应的功能。 点击左边的“截图OCR”进入页面 点击“截图”按钮选…

SpringBoot自定义starter(starter的命名规范、starter的结构、自定义starter、为配置属性添加描述信息、检验配置属性)

文章目录 0. 前言1. 前置知识1.1 starter的命名规范1.2 分析 Mybatis 的场景启动器1.3 starter的结构分析 2. 创建自定义的场景启动器2.1 创建父工程2.2 初始化父工程2.3 创建 autoconfigure 模块2.4 创建 starter 模块2.5 在 starter 模块中引入 autoconfigure 模块的依赖2.6 …