前言
关于Tomcat的线程模型,网上也介绍了很多了,我也不搬过来了(主要是因为懒)
至于原理嘛,我听一个老师这么说过,框架工具都是别人做出来的,你只能按照别人的思路来理解,毕竟你没有别人那么厉害
说的也是o(╥﹏╥)o,打不过就加入
所以,我今天也只是分享一种自己比较容易记住的方式,来记住Tomcat的NIO模型,便于自己以后跟别人吹水,同时也分享一下,还请各位看官勿喷
Tomcat的NIO线程模型
Tomcat有三种模型,BIO、NIO、APR,Tomcat8以上版本,默认使用的就是NIO模式,所以我们这里主要(啥主要啊,你就没讲其他的)是讲NIO线程模型
大致的流程上图已经讲得很详细了,再多的等以后学废了再补充吧
现在来总结一下上图涉及的几个组件
- ACceptor
- nioChannel
- pollerEvent
- Pollerselector
- sockeTprocessor
将上面的几个加粗大写字母凑一块,ACCEPT,Tomcat就是用来接收(accept)请求的,嗯,凑合着记吧~
根据这几个组件来回顾大概的流程
- 用户请求进来,进入tomcat,首先是由ACceptor接收
- 接收完,从缓存中检索nioChannel对象
- 接着是由poller池里的poller thread将channel对象注册到pollerEvent事件上
- 由Pollerselector轮询器将channel分配给一个work线程处理请求
- 最后sockeTprocessor处理器处理完请求并返回
结语
水…咳咳,到这就差不多了(写太多会没人看得下去的)
先对tomcat线程模型有个大概印象,对几个比较重要的组件先混个眼熟,以后学tomcat的源码和底层原理才不至于被劝退,最后还是那句老话哈,本文仅供自己学习和分享所用,非商业用途,侵权必删