当前位置: 首页 > 知识库问答 >
问题:

Spring-Boot:并发处理多个请求

淳于禄
2023-03-14

我正在使用Spring Boot构建一个RESTful web服务。我的IDE是Eclipse Oxygen。

这里是我的控制器代码:

@RestController
@RequestMapping("/dummy")
public class DummyController {
    @RequestMapping(method = RequestMethod.GET)
    public ResponseEntity<Map<String, String>> dummytsp(@RequestParam(value="msg", defaultValue="Hello") String msg) {
        System.out.println("" + new Date() + ": ThreadId " + Thread.currentThread().getId());

        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        Map<String, String> response = new HashMap<>();
        response.put("message", msg);
        return new ResponseEntity<>(response, HttpStatus.OK);
    }
}

我的控制台输出是:

Thu Sep 14 11:31:15 EDT 2017: ThreadId 25
Thu Sep 14 11:31:20 EDT 2017: ThreadId 26
Thu Sep 14 11:31:25 EDT 2017: ThreadId 28
Thu Sep 14 11:31:30 EDT 2017: ThreadId 30

控制台输出显示每5秒调用一次控制器。但我每隔两秒就发送一次请求。

是否可以接受来自同一会话的并发多个请求

谢谢!

共有1个答案

邓威
2023-03-14

默认情况下,Spring Boot web应用程序是多线程的,并且将同时处理多个请求。

这可能是浏览器特有的怪癖。在Windows10上,Chrome和Firefox似乎确实会将多个请求排队到同一个URL上,而IE、Edge和curl则不然。

 类似资料:
  • 假设我有一个Employee类。它有很多字段,比如id、名字、姓氏、姓名、年龄、薪水和其他字段。现在,我正在进行一个Get查询,希望使用所有这些字段(required=false)作为请求参数传递。 但问题是,可能有许多组合,如(firstName, age)或(age,工资,lastName)或(指定,年龄,工资,lastName)等等。那么我应该如何处理所有这些筛选器。我必须为每个案例编写每个

  • 我们的身体结构与此非常相似:- {'a':'value A1','b':{'b1':'value B1','b2':'value B2'}} 现在,我们有一个b的DTO,它有b1和b2。 ''' "'同样,我们对整个结构有一个DTO,它具有值String a和bDTO。 ''' ''我们制造他们的物品-- b b=new B("value eB1","value eB2"); Z z=new Z(

  • 并发请求处理 我创建了一个服务器,并使用s.listenandserve()来处理请求。据我所知,这些请求是同时送达的。我使用一个简单的处理程序来检查它: 我看到,如果我发送了几个请求,我将看到所有的“1”出现,只有在一秒钟后所有的“2”出现。但是如果删除Hibernate行,我会看到程序在完成前一个请求之前从不启动请求(输出为1 2 1 2 1 2...)。所以我不明白,如果它们是并发的还是不是

  • 我和Spring Boot一起玩RSocket。我想做一个简单的请求-响应示例。作为示例,我从这个链接中获取代码: 当我运行示例代码不做更改时,我会在异常请求期间得到错误。这个错误不是这个问题的重点,但我只是想展示由Baeldung对原始源代码的更改。 [reactor-tcp-nio-1]org.springframework.core.log.compositeLog:[5927A44D-9]

  • 我正在用Spring Boot开发Rest API,它部署在AWS Beanstalk上。潜在的是,这项服务每天会有成千上万的客户点击。因此,我想了解Spring Boot处理多个请求的能力。 从我在Spring-Boot中读到的内容:并发处理多个请求和如何在spring boot中拥有线程安全的控制器,似乎spring boot可以在控制器是线程安全的同时并发处理请求。 但是,如果同时向同一个e

  • 有一个场景,1000个请求要求redis获取名为goods_stock的密钥,同时在redis中设置该密钥的vaule等于goods_stocks-1,redis服务器如何处理这些请求?它是否处理默认队列,就像每个请求都是块请求一样?