tomcat 线程和 spring boot 中异步注释启动的线程有什么区别?
What are the differences between a tomcat thread and a thread started by the async annotation in spring boot?
我正在学习线程以及构建 Web 应用程序时线程的工作原理。
据我了解流程如下:
- 用户发送 Http 请求
- Tomcat 创建线程 运行 连接控制器。
- Spring boot 运行s 一个异步注释方法,运行s 代码在 spring boot app 创建的单独线程池上。
- 释放tomcat线程,直到异步方法完成以处理更多请求。
我的理解正确吗?
spring 引导是否会创建自己的线程池以在释放主 tomcat 线程时进行 运行 异步操作?
调用异步方法时,tomcat 线程不会“释放”或“释放”。它在异步方法调用之后继续执行下一条指令并继续进行(除非它对异步方法返回的未来执行调用 get 之类的操作,以便它阻塞直到未来完成)。两个线程同时执行。
确实 Spring 有自己独立的线程池用于异步方法。使用的执行器是可配置的,@Async 将执行器的名称作为参数,因此不同的方法可以根据需要使用不同的池。当然,Tomcat 有一个线程池。
我正在学习线程以及构建 Web 应用程序时线程的工作原理。
据我了解流程如下:
- 用户发送 Http 请求
- Tomcat 创建线程 运行 连接控制器。
- Spring boot 运行s 一个异步注释方法,运行s 代码在 spring boot app 创建的单独线程池上。
- 释放tomcat线程,直到异步方法完成以处理更多请求。
我的理解正确吗?
spring 引导是否会创建自己的线程池以在释放主 tomcat 线程时进行 运行 异步操作?
调用异步方法时,tomcat 线程不会“释放”或“释放”。它在异步方法调用之后继续执行下一条指令并继续进行(除非它对异步方法返回的未来执行调用 get 之类的操作,以便它阻塞直到未来完成)。两个线程同时执行。
确实 Spring 有自己独立的线程池用于异步方法。使用的执行器是可配置的,@Async 将执行器的名称作为参数,因此不同的方法可以根据需要使用不同的池。当然,Tomcat 有一个线程池。