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


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

spring spring-mvc java tomcat

花生马里奥 10 years ago

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

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

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

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

失败的蓝蓝路 answered 10 years ago

Your Answer