tomcat是如何对处理并发请求的,如果高并发请求同一个方法会造成线程安全吗?
tomcat是如何对处理并发请求的,是对每个访问都创建一个线程然后当一个线程进入到方法中,其他线程阻塞?
花生马里奥
9 years, 10 months ago
Answers
这当然是不可能的,否则不可能应付数以千计的并行请求。
根据 这篇文章 ,Tomcat 7 的 Connector 分为两种模式,NIO (非阻塞)和 BIO (阻塞)。其中 NIO 用固定数目线程接受全部连接请求,Web 应用程序用 Java NIO API 来处理。BIO 则对每个请求在一个单独的线程池上获取线程来处理。
NIO 本身占用线程较少,代价是应用开发者需要用 Buffer 处理。应用开发者需要管理 Buffer 和保护它们。提供的并行性能力较强。
BIO 提供阻塞流,应用开发比较容易。每个请求在单独线程中,应用开发者需要保护自己的共用数据结构(一般用
Lock
或
Synchronize
)。它提供的并行性能力较弱。
失败的蓝蓝路
answered 9 years, 10 months ago