tomcat是如何对处理并发请求的,如果高并发请求同一个方法会造成线程安全吗?


tomcat是如何对处理并发请求的,是对每个访问都创建一个线程然后当一个线程进入到方法中,其他线程阻塞?

spring spring-mvc java tomcat

花生马里奥 9 years, 11 months ago

这当然是不可能的,否则不可能应付数以千计的并行请求。

根据 这篇文章 ,Tomcat 7 的 Connector 分为两种模式,NIO (非阻塞)和 BIO (阻塞)。其中 NIO 用固定数目线程接受全部连接请求,Web 应用程序用 Java NIO API 来处理。BIO 则对每个请求在一个单独的线程池上获取线程来处理。

NIO 本身占用线程较少,代价是应用开发者需要用 Buffer 处理。应用开发者需要管理 Buffer 和保护它们。提供的并行性能力较强。

BIO 提供阻塞流,应用开发比较容易。每个请求在单独线程中,应用开发者需要保护自己的共用数据结构(一般用 Lock Synchronize )。它提供的并行性能力较弱。

失败的蓝蓝路 answered 9 years, 11 months ago

Your Answer