记一次使用Java8新特性中的parallelStream⭐️数据流引发的接口异常以及解决方法

news2025/11/5 12:35:21

目录

前言       

正文

代码

分析

问题解决

总结


前言       

        小伙伴们大家好,分享下开发过程中最近遇到的坑,根据新需求,项目的一处模块需要改动,大致说下该模块的流程。。。好像之前有讲过,翻翻看,果然

        是同一个接口,查看这里即可

正文

        简单叙述下这次的故障,接口方法逻辑第一步就是切库,然后去查询相应的数据拼装承集合返回即可,需要做的就是在查询数据时,从另外一个data_point表中查询数据的创建时间,嗯基槽,搞个mapper传一些参数查询出来拼到结果集里就行,三下五除二改好用apipost测试下

        No 接口异常了,哼哼 不慌,打开控制台看看什么问题(滚轮疯狂滑动),显示执行sql时主库里没有该表(废话,有表还切库干嘛)等等我不是切库了吗,继续往上翻,没发现切库异常报错呀,莫慌打个断点调试下,纳尼 切库确实没问题啊,怎么新增的mapper这里就窜到主库里去了

        two thousand year later...各种方法都试过了(去除缓存,另起一个mapper,chatGpt...)最后找大佬同事帮哈忙瞅了瞅,找到问题了,大家伙看标题应该就知道了,没错异步stream流的问题,来看下事发代码

代码

visitDateForSubjectList.parallelStream()
//                .filter(visitData -> !this.checkTaskIsOutGroup(visitData, settings))
                .forEach(visitData -> blockList.stream().filter(e -> e.getIInsId().equals(visitData.getInstanceId())).forEach(block -> {
                    setBlockRelatedDate(block, dataPointList, dataPageList);
                    subjectTaskVOList.add(this.setSubjectTaskRelatedDate(timeMap, subjectId, visitData, block, forms, settings));
                }));

分析

        这里调用了新特性数据流,然后在这里新建一个线程异步去拼接一部分数据,巧了,新增的代码正好让我给加到这里的this调用的方法中了,但是新建的线程并不会走控制层的切库方法,导致直接到主库里查询,然后报错

Java中的parallelStream是Java 8引入的一个功能,它允许以并行方式处理数据流。当使用parallelStream时,数据处理会分布到多个线程上,这些线程通常是从ForkJoinPool中获取的,默认情况下其线程数目取决于运行时机器的CPU核心数目。

问题解决

        发现问题后面就容易了,异步调用中不能切库(测试过有问题)是吧,那就直接在对需要进行数据流处理的集合抢先一步操作, 代码如下,先一步处理需要改动的数据,流厘米按需要赋值的时候直接从map中取即可,改造完成,跑一下没有异常 OVER.

总结

        大胆怀疑,这里因为是对原有的代码改造,导致太过于信赖原生代码,一直在检查自己代码,迷失了方向,所以说小伙伴们要大胆质疑,勇于实践!


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

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

相关文章

Linux4.8、环境变量续

个人主页:Lei宝啊 愿所有美好如期而遇 前言 如果对环境变量没有基本的理解,那么建议先看完这篇文章:环境变量https://blog.csdn.net/m0_74824254/article/details/134661113?spm1001.2014.3001.5501 环境变量与本地变量区别 使用export设…

response应用

文章目录 [TOC](文章目录) response说明一、response文件下载二、待补充。。。 response说明 response是指HttpServletResponse,该响应有很多的应用,比如像浏览器输出消息,下载文件,实现验证码等。 一、response文件下载 1.创建一个javaw…

跨境代采怎么实现(代采网站)

中国代购作为一种新型的业务形式,此类服务能够帮助消费者购买来自全球的商品,同时也为商家提供了在线销售机会。代购行业的兴起,有助于打破传统的地域和跨境限制,促进了国际贸易和经济发展。 一、中国代购的定义和特点 代购可以被…

基于SpringBoot实现的电影院售票系统

一、 系统架构 前端:html | jquery | bootstrap 后端:springboot | thymeleaf | spring-data-jpa 环境:jdk1.8 | mysql | maven 二、代码及数据库 三、功能介绍 01. 首页 02. 登录页 03. 管理端-电影列表 04. 管理端-添加电影 05. 管…

【EI会议征稿中】第五届人工智能与机电自动化国际学术会议(AIEA 2024)

第五届人工智能与机电自动化国际学术会议(AIEA 2024) 2024 5th International Conference on Artificial Intelligence and Electromechanical Automation 第五届人工智能与机电自动化国际学术会议(AIEA 2024)将于2024年3月8-10…

3 数据库

目录 一、数据库的基本信息 1.1 数据库的定义 1.2数据库的分类 1.2.1 关系型数据库 1.2.2 非关系型数据库 1.3 SQL介绍 1.3.1 概念 1.3.2 SQl语言分类 1.3.3 SQL注释 1.3.4 数据库操作命令DDL 1.3.5 数据表操作命令DDL 1.3.6 数据表操作命令DML 1.3.7 数据表中内容…

2023跳槽最新面试题整理:软件测试面试题(附带答案)备战面试...

混迹于软件测试行业十几年了,在面试经验方面也是比较有经验,那么也整理过很多面试题,今天暴露给大家看看,学习学习! 测试面试一般从以下三大方向蹂躏面试者: 1、基本素养–比如沟通方向的考察&#xff0c…

同城上门洗鞋店小程序,打破传统洗鞋店新模式

同城洗鞋,一种把传统洗鞋和互联网结合的新兴服务,它让洗鞋更便捷、品质更高。你不用再为排队等待而烦恼,只需在家预约,我们的服务人员就会按时上门取鞋,进行初步清洗和检查。根据鞋子材质和污渍程度,选择合…

Java网络编程——基础入门

1、进程间的通信 进程指运行中的程序,进程的任务就是执行程序中的代码。EchoPlayer类是一个独立的Java程序,它可以在任意一台安装了JDK的主机上运行: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStr…

【EI会议征稿中|航空航天领域】第二届航空航天与控制工程国际学术会议(ICoACE 2023)

第二届航空航天与控制工程国际学术会议(ICoACE 2023) 2023 2nd International Conference on Aerospace and Control Engineering 2023年第二届航空航天与控制工程国际学术会议(ICoACE 2023)将于2023年12月15-17日在江苏南京召开…

性能测试计划怎么编写

一.简介 简介部分就不用过多描述了,无非项目的背景,进行此次性能测试的原因,以及性能测试覆盖的范围等等,几乎所有项目文档都在开端对项目进行简单的阐述。 二.性能测试需求 寻找的被测试对象和压力点 …

蓝桥杯算法心得——想吃冰淇淋和蛋糕(dp)

大家好,我是晴天学长,dp题,怎么设计状态很重要,需要的小伙伴可以关注支持一下哦!后续会继续更新的。💪💪💪 1) .想吃冰淇淋和蛋糕 想吃冰淇淋与蛋糕 输入格式 第一行输入一个整数n。…

python文件操作知识

【一】操作流程: 打开文件,得到一个文件句柄(对象),赋给一个对象。通过文件句柄对文件进行操作。关闭文件。 【 二 】 使用方法 open(路径 文件名,读写模式) 如下: …

Netty02-基础概念

什么是netty ​ Netty是一个基于Java NIO的异步事件驱动网络应用程序框架。它提供了简单易用的API,用于快速开发可维护的高性能网络应用程序。Netty的设计目标是提供一种高度可扩展的、高性能的网络应用程序框架,使得开发人员能够轻松地构建各种类型的网…

unity | 动画模块之循环滚动选项框

一、作者的话 评论区有人问,有没有竖排循环轮播选项框,我就写了一个 二、效果动画 如果不是你们想要的,就省的你们继续往下看了 三、制作思路 把移动分成里面的方块,还有背景(父物体),方块自…

基于 springboot + vue 健身房管理系统 毕业设计-附源码

qq(2829419543)获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:springboot 前端:采用vue技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件&#xf…

AI交互数字人如何成为古镇文化传播者?

近日,南浔古镇出现了5位数字人,将古镇文化与数字人相结合,实现旅游营销的创新尝试。数字人不仅可以作为南浔古镇的品牌形象,还可以作为南浔古镇的文化传播者,化身AI交互数字人与游客互动交流,讲述南浔古镇的…

安全AI系统开发指南

执行摘要 本文件建议为使用人工智能(AI)的任何系统的提供商提供指导方针,无论这些系统是从头开始创建的,还是建立在他人提供的工具和服务之上的。实施这些指导方针将有助于提供商构建按预期运行、在需要时可用的人工智能系统&…

基因组注释流程

一边学习,一边总结,一边分享! 详细教程请访问: 组学分析流程 本期分析流程 Hisat2-SamtoolsTrinity_GG_denovoPASA … 本期教程文章 题目:Genomic insights into local adaptation and future climate-induced vu…

2023Q4 私有化版本发布,和鲸 ModelWhale 持续赋能大科研、高校教改的 AI for Science

作为数据科学多人协同平台,和鲸 ModelWhale 从一而终地为各级用户提供完备而周全的解决方案,覆盖数据研究、算法探索、模型调优、Python 案例教学等多个场景。特别地,如果对研究分析平台有更高的安全合规要求、希望兼容原有业务系统&#xff…