【发布时间】:2018-08-26 23:10:35
【问题描述】:
据我所知(如果我错过了,请添加)当我们使用 Spring MVC 应用程序时,当请求来自我们的服务器(Tomcat ...)时,我们有一个线程池来自池处理这个请求的线程之一,有时这很糟糕,因为如果任务需要很长时间,我们的线程将一直很忙,为了避免这种行为,我们可以将控制器的返回类型从示例字符串更改为 Callable<String> 或 DefferedResult<String>,现在来自 tomcat 的工作线程从 ExecutorService(我们在@Configuration 类中配置)给线程执行,它更好,因为 tomcat 线程可以处理其他请求并且不会等待每个请求的执行。
但我不明白 WebFlux 的想法。正如我从官方文档中了解到的那样,我们有一个处理所有请求的单线程,然后(我不明白如何)返回响应,但是如果一个请求等待长任务(查询到数据库),这是否意味着该线程将等到当前任务完成,否则它会为此任务创建新线程,如果是,它与 Callable 和 DeferedResult 有何不同?
提前致谢
【问题讨论】:
-
据我所知,这是一个冗长而漫无边际的问题,我没有做到最后 - 但也许有人可以。如果是这样,我希望他们能够以官方文档无法帮助您理解的方式。
标签: java spring-mvc spring-webflux