10:05:20.935 [http-nio-3000-exec-3] DEBUG org.springframework.web.context.request.async.WebAsyncManager - Started async request
10:05:20.936 [http-nio-3000-exec-3] DEBUG org.springframework.web.servlet.DispatcherServlet - Exiting but response remains open for further handling
Loading...
1.收到一个请求就处理,这个时候就不能处理新的请求,这种为阻塞
2.收到一个请求就新开一个线程去处理任务,主线程返回,继续处理下一个任务,这种为非阻塞。
类似2的模型,但是不是每次收到请求就开一个新的线程,而是使用线程池。不过,它依然是阻塞的。线程池的线程数量通常有限制的,如果所有线程都被阻塞(例如网速慢,或者被人恶意占用连接),那么接下来的请求将会排队等待。
Tomcat运行可以选择BIO或者NIO模型,修改server.xml
问题:那么spring boot 环境下,tomcat的运行模式是哪种?
而廖大使用的这个内嵌的tomcat,默认走的应该是nio,因为启动时的线程名。
暂时研究到这,想了解更深的同学,这里是美团一遍关于nio的解析文章。https://tech.meituan.com/2016/11/04/nio.html
突然想到这里好像和node很像。一直在讲node的单线程高并发。这个概念,到现在才有点感觉。以后再研究,现在的水平只能到这了