关于springboot一个接口请求后,主动取消后,后端是否还在跑

1、最近在思考一个问题,如果一个springboot的请求的接口比较耗时,中途中断该请求后,则后端服务是否会终止该线程的处理,于是写了一个demo

 @RequestMapping(value = "/test", method = RequestMethod.GET)public BasicResult downloadtest(Long jobId) {try {logger.info("请求开始,入参:{} ", jobId);Thread.sleep(60_000);logger.info("请求结束,入参:{} ", jobId);return BasicResult.success("处理成功" + jobId);} catch (Throwable t) {logger.error("接口异常,查询失败,user:{},原因:{},cause by: {}",UserInfoHolder.getUserOa(), t.getMessage(), t);}}

2、针对改接口进行http请求:

http://localhost:8082/test?jobId=34

3、打印日志如下:

4、发现即使取消请求后,springboot后端还是会进行业务处理,不会自动终止的。

后续总结:

当一个 Spring Boot 应用的请求接口比较耗时,并且客户端在请求中途中断(例如,通过关闭浏览器或发送一个 HTTP 取消请求),后端服务是否会终止该线程的处理取决于多个因素。

  1. 请求类型

    • 对于同步请求,如果客户端关闭了连接,服务器端的线程通常不会立即终止。因为服务器不知道客户端是否已经接收到响应,或者是否还有后续的数据需要发送。
    • 对于异步请求(例如使用 @Async 注解),情况可能有所不同。如果请求被中断,服务器可能会尝试取消任务,但这取决于异步任务的具体实现和取消策略。
  2. 服务器配置

    • 某些服务器配置(如 Tomcat)允许你设置连接超时时间。如果请求超过这个时间还没有完成,服务器可能会自动中断连接并停止处理。
    • 某些服务器或框架可能会提供特定的机制来检测中断的请求并尝试优雅地停止处理。
  3. 请求处理逻辑

    • 开发者编写的代码逻辑也会影响线程的处理。如果代码逻辑中有检测请求中断的逻辑(例如,通过检查请求的属性或异常),那么线程可能会在适当的时候停止处理。
    • 如果代码没有这样的逻辑,线程可能会继续执行,直到完成或遇到其他异常。
  4. 资源考虑

    • 即使请求被中断,如果线程已经消耗了大量资源(如 CPU、内存或数据库连接),那么立即终止线程可能会导致资源浪费。因此,一些系统可能会选择让线程完成其当前的工作,然后优雅地关闭。

总的来说,当客户端中断请求时,后端服务是否会终止线程的处理取决于具体的实现、配置和逻辑。为了处理这种情况,开发者可能需要编写额外的逻辑来检测请求的中断,并适当地停止线程的处理。此外,选择适当的服务器配置和框架也可以帮助管理这种情况。

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

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

相关文章

云消息队列 Confluent 版正式上线!

作者:阿里云消息队列 前言 在 2023 年杭州云栖大会上,Confluent 成为阿里云技术合作伙伴,在此基础上,双方展开了深度合作,并在今天(3月1日)正式上线“云消息队列 Confluent 版”。 通过将 Co…

android基础学习

从上面的描述就可以知道,每一个Activity组件都有一个对应的ViewRoot对象、View对象以及WindowManager.LayoutParams对象。这三个对象的对应关系是由WindowManagerImpl类来维护的。具体来说,就是由WindowManagerImpl类的成员变量mRoots、mViews和mParams所…

【Apache Camel】基础知识

【Apache Camel】基础知识 Apache Camel是什么Apache Camel基本概念和术语CamelContextEndpointsRoutesRouteBuilderComponentsMessageExchangeProcessorsDomain Specific Language(DSL) Apache Camel 应用执行步骤Apache Camel 示意图参考 Apache Camel…

学习Java的第一天

一、Java简介 Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 面向对象程序设计语言和 Java 平台的总称。由 James Gosling和同事们共同研发,并在 1995 年正式推出。 后来 Sun 公司被 Oracle (甲骨文)公司收购,Jav…

【30 天 JavaScript 挑战】学习笔记

30 天 JavaScript 挑战 专为 JavaScript 初学者设计 掌握必备 JavaScript 技能 前端人,前端魂,刷完 JS 即入门! 题目地址:https://leetcode.cn/studyplan/30-days-of-javascript/ 个人学习笔记:https://github.com/kaimo313/…

CRM系统的操作记录,应该怎样设计?多个独立模块的操作记录不同步,如何解决?

CRM系统的操作记录,应该怎样设计? 设计CRM(Customer Relationship Management,客户关系管理)系统的操作记录功能时,主要目标是确保所有与客户相关的活动和交互都能够被准确、详细地追踪和记录。以下是一种…

【AAAI2023】基于神经跨度的持续命名实体识别模型

论文标题:A Neural Span-Based Continual Named Entity Recognition Model 论文链接:https://arxiv.org/abs/2302.12200 代码:https://github.com/Qznan/SpanKL inproceedings{zhang2023spankl,title{A Neural Span-Based Continual Named En…

ElevenLabs用AI为Sora文生视频模型配音 ,景联文科技提供高质量真人音频数据集助力生成逼真音效

随着Open AI公司推出的Sora文生视频模型惊艳亮相互联网,AI语音克隆创企ElevenLabs又为Sora的演示视频生成了配音,所有的音效均由AI创造,与视频内容完美融合。 ElevenLabs的语音克隆技术能够从一分钟的音频样本中创建逼真的声音。为了实现这一…

RPC——远程过程调用

一、RPC介绍 1.1 概述 RPC(Remote Procedure Call Protocol) 远程过程调用协议。RPC是一种通过网络从远程计算机程序上请求服务,不需要了解底层网络技术的协议。RPC主要作用就是不同的服务间方法调用就像本地调用一样便捷。 1.2 RPC框架 …

QT----在编译器里能够连接云端数据库,使用windeployqt打包后运行程序,链接不上云端mysql数据库

问题描述 在编译器里能够连接云端数据库,使用windeployqt打包后运行程序,链接不上云端mysql数据库,困扰了好几天 打包发布手机上的app还是无法连接 问题解决 打包的时候没有将这个文件放入,我们复制放到exe的目录即可

redis原理深入解析之看完这篇还需要努力

数据结构 动态字符串SDS struct __attribute__ ((__packed__)) sdshdr8 {uint8_t len; /*已保存的字节数 不含结束标识 header*/uint8_t alloc; /*申请总的字节数,不含结束标识 header*/unsigned char flags;/*不同sds头类型,控制sds头大小 header*/…

【AI视野·今日Robot 机器人论文速览 第八十二期】Tue, 5 Mar 2024

AI视野今日CS.Robotics 机器人学论文速览 Tue, 5 Mar 2024 Totally 63 papers 👉上期速览✈更多精彩请移步主页 Interesting: 📚双臂机器人拧瓶盖, (from 伯克利) website: https://toruowo.github.io/bimanual-twist 📚水下抓取器, (from …

Dynamo初学尝试梳理(五)-代码块上

“学而时习之,不亦说乎”,今天接着来,稍微提高点难度(高手直接忽略就行)。 代码块(Code Block),是 dynamo 中可以直接输入 DesignScript 的节点。可以通过双击鼠标左键,快…

代码随想录算法训练营第15天| 102. 二叉树的层序遍历、226. 翻转二叉树、101. 对称二叉树

102. 二叉树的层序遍历 题目链接 102. 二叉树的层序遍历 - 力扣&#xff08;LeetCode&#xff09; 思路 这道题的正常解法&#xff08;迭代法&#xff09;二刷时能做出来&#xff0c;bugfree&#xff0c;但是递归法没有掌握。 本人题解 class Solution { public:vector<…

Rust有没有信号量机制,在缓存有数据的时候才允许等待的进程取数据?

Rust提供了信号量&#xff08;Semaphore&#xff09;机制&#xff0c;尽管它并没有直接提供类似于某些其他编程语言中的Semaphore类。然而&#xff0c;你可以使用std::sync::Mutex和std::sync::Condvar&#xff08;条件变量&#xff09;组合来实现信号量的功能。 信号量通常用…

程序员书单推荐:从入门到精通的必读之作

在程序员的职业生涯中&#xff0c;阅读技术书籍是不断学习和提升自我的重要途径。本文将为你推荐一系列从入门到精通的程序员书单&#xff0c;帮助你系统地掌握编程知识、提高技能水平&#xff0c;并在职业生涯中取得更大的进步。 一、入门篇 《Head First C语言》&#xff1…

基于SpringBoot+Vue+ElementUI+Mybatis前后端分离管理系统超详细教程(一)

Vue.js 是一个流行的前端框架&#xff0c;用于构建用户界面和单页应用程序。Vue 2 是其第二个主要版本&#xff0c;它提供了数据绑定、组件化、虚拟DOM等核心特性。要搭建一个 Vue 2 的工程化项目&#xff0c;可以遵循以下步骤&#xff1a; 一、前端环境搭建 &#xff08;一&a…

Maven入门(作用,安装配置,Idea基础maven,Maven依赖,Maven构建项目)【详解】

目录 一. Maven的作用 1.依赖管理 2.统一项目结构 3.项目构建 二.Maven安装配置 1. Maven的仓库类型 2 加载jar的顺序 3. Maven安装配置 4.安装Maven 5.配置仓库 三.idea集成maven 1.给当前project集成maven 2.给新建project集成maven 3.创建maven项目 4.pom…

二维码门楼牌管理系统应用场景:地方社区管理的新利器

文章目录 前言一、地方社区管理部门的门牌信息利用二、与社区管理部门的联动效应三、结论 前言 随着信息技术的不断发展&#xff0c;二维码门楼牌管理系统逐渐成为地方社区管理的新宠。该系统通过集成二维码技术与门楼牌信息&#xff0c;为社区管理带来了前所未有的便利与高效…

git 最基本的几条命令

git 最基本的几条命令 初始化本地仓库和推送到远程仓库 打开命令提示符或PowerShell&#xff1a;在你的本地项目目录中&#xff0c;可以通过文件资源管理器地址栏输入cmd或PowerShell 并回车来打开初始化 Git&#xff1a;git init添加所有文件到新的Git仓库&#xff1a;git a…