有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Spring MVC控制器如何处理多个长http请求?

正如我发现的,字符串中的控制器是单音Are Spring MVC Controllers Singletons?

问题是,Spring如何处理多个耗时较长的请求,以实现同一映射?例如,当我们想要返回一个需要长时间计算或连接到其他服务器的模型时,有很多用户向同一个url发送请求

我认为异步线程不是一个解决方案,因为在维护下一个请求之前,方法需要结束吗?还是不


共 (1) 个答案

  1. # 1 楼答案

    请求是使用线程池(容器管理)处理的,因此每个请求都有一个独立的上下文,不管控制器是否为单例

    重要的一点是,单例实例不能在请求之间共享状态,以避免意外行为或竞争条件

    线程池容量将定义服务器在同步模型中可以处理的请求数

    如果你想要一种异步方法,你可以使用很多选项,比如:

    1. 拥有一个独立的线程池来处理容器线程中的任务,或者
    2. 使用队列推送任务并使用调度程序处理任务,或
    3. 使用WebSocket发出请求,并使用(1)或(2)进行处理,然后在完成后接收通知