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

相关推荐
阿拉斯攀登9 小时前
Spring Boot ——入门与实战
spring boot·springboot
她说..10 小时前
Spring AOP场景4——事务管理(源码分析)
java·数据库·spring boot·后端·sql·spring·springboot
原来是好奇心11 小时前
深入Spring Boot源码(八):高级特性与扩展点深度解析
java·源码·springboot
她说..13 小时前
手机验证码功能实现(附带源码)
java·开发语言·spring boot·spring·java-ee·springboot
原来是好奇心15 小时前
深入Spring Boot源码(七):测试框架原理与最佳实践
java·源码·springboot
大学生资源网1 天前
java毕业设计之面向校园的助力跑腿系统设计与实现源码(源码+文档+数据库)
java·数据库·mysql·毕业设计·源码·springboot
原来是好奇心1 天前
深入Spring Boot源码(五):外部化配置与Profile机制深度解析
java·源码·springboot
沧澜sincerely2 天前
WebSocket 实时聊天功能
网络·websocket·vue·springboot
后端小张2 天前
【JAVA 进阶】深入拆解SpringBoot自动配置:从原理到实战的完整指南
java·开发语言·spring boot·后端·spring·spring cloud·springboot
原来是好奇心2 天前
深入Spring Boot源码(四):Starter机制与依赖管理深度解析
java·源码·springboot·starter