SpringBoot--为什么Controller是串行的?怎样才能并行?

原文网址:SpringBoot--为什么Controller是串行的?怎样才能并行?-CSDN博客

简介

本文介绍SpringBoot为什么Controller是串行的?在什么场景下才能并行执行?

大家都知道,SpringBoot的Controller按理是并行执行的,也就是说:如果一个请求没执行完,另一个请求就进入了,那么第二个请求也会立刻执行,与第一个请求并行。但事实真的是这样吗

问题描述

对于下边的Controller,如果一个请求没执行完,另一个请求就进入了,会输出什么结果?

java 复制代码
package com.knife.example.controller;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@Api(tags = "测试")
@RestController
public class TestController {

    @ApiOperation("测试1")
    @GetMapping("test1")
    public String test1(String username) {
        System.out.println("方法进入。线程名:" + Thread.currentThread().getName());

        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }

        System.out.println("方法退出。线程名:" + Thread.currentThread().getName());

        return "success";
    }
}

为了方便,我这里用的是knife4j(swagger的升级版)。

请求方式:打开两个页面,传参一样。先在第一个页面请求,第一个页面还没返回时,快速在第二个页面请求。

后端的打印结果:

java 复制代码
方法进入。线程名:http-nio-8080-exec-7
方法退出。线程名:http-nio-8080-exec-7
方法进入。线程名:http-nio-8080-exec-8
方法退出。线程名:http-nio-8080-exec-8

什么?竟然是串行的!第一个请求完全退出之后,第二个请求才进来,这是为什么!

原因排查

上边是部分内容,为便于维护,全文已转移到此网址:SpringBoot-为什么Controller是串行的?怎样才能并行? - 自学精灵

相关推荐
欢醉6 分钟前
一次P0 故障:微服务线程数莫名暴涨 10 倍,线程问题踩坑
springboot·线程·springcloud
YDS8292 天前
大营销平台 —— 第二阶段初始化以及DB路由中间件的使用及基本原理
java·springboot·ddd
小小放舟、4 天前
PaiCLI-Demo:从零实现 ReAct Agent + Tool Call
java·后端·intellij-idea·springboot·agent·react·tool call
碎碎念_4925 天前
前后端分离项目开发规范
nginx·vue·springboot·restful
欢醉5 天前
k8s的pod容器中微服务无法创建新线程unable to create new native thread
kubernetes·springboot
她说..7 天前
Apache Commons Lang3 Pair 完整版实战详解
java·spring·java-ee·apache·springboot
文慧的科技江湖10 天前
一文读懂光伏、储能,充电工作原理,是如何实现闭环的,其中微电网(ems)是什么;这个内容,就看懂了源网荷储。十五五规划里面最核心的能源管理内容
开源·springboot·储能·光伏
AI人工智能+电脑小能手10 天前
【大白话说Java面试题 第163题】【06_Spring篇】第23题:说说SpringBoot 自动配置原理?
java·自动配置·springboot·spi·条件注解
AI人工智能+电脑小能手10 天前
【大白话说Java面试题 第164题】【06_Spring篇】第24题:如何理解 SpringBoot 的 Starter?
java·自动配置·springboot·starter·自定义组件
极光代码工作室10 天前
基于SpringBoot的订单管理系统
java·springboot·web开发·后端开发