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是串行的?怎样才能并行? - 自学精灵

相关推荐
小蒜学长3 小时前
基于SpringBoot+Vue的游戏论坛系统的设计与实现(代码+数据库+LW)
java·后端·springboot·游戏论坛系统·社区生态
新时代农民工~3 小时前
【双机高可用部署方案-前后端部署】
java·nginx·springboot
愛芳芳5 小时前
Swagger2 多环境动态配置实战指南
java·后端·maven·springboot·swagger
滕州市燕猫虎计算机科技工作室个体工商户19 小时前
SpringCloud应用启动后自动shutdown的原因
springboot·springcloud·自动退出·自动shutdown
凤山老林1 天前
高并发系统架构设计:Spring Boot 多级限流、库存预扣减与异步下单全链路实战
springboot·高并发·限流·异步
风中的小熊生气2 天前
Spring Boot 面试知识(二):分层、IoC、异常、配置与 Redis
java·springboot
EatFan2 天前
Java接入微信支付保姆式教程(三):SpringBoot 接入微信支付并完成统一下单
微信小程序·微信支付·springboot
她说..9 天前
MySQL 与 Java 的 JSON 数据处理
java·mysql·json·springboot
Mr.Java.10 天前
本地测试全绿,上线 SQL 报错?Spring Boot 容器级 DT 测试实战指南(附Skills)
java·测试用例·springboot·testcontainers·dt·java测试skills·dt测试
苏渡苇10 天前
Spring Insight 里上报 Span 为什么用 JDK HttpClient 而不是 RestTemplate
java·后端·spring·spring cloud·springboot·性能监控