Tomcat NIO中整体架构是怎么样的


小编给大家分享一下Tomcat NIO中整体架构是怎么样的,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Acceptor线程tomcat NIO 架构中会有一个 acceptor 线程,这个线程主要监听端口。当有请求过来的时候,完成 tcp 三次握手,将 accept 过来的 socket 注册OP_REGISTER 事件,并将该事件提交到 Poller 线程的事件队列 PollerEventQueue中 。
在 tomcat NIO 架构中会有 poller 线程,在 tomcat8 及以前的版本之中,可以通过 pollerThreadCount 配置 poller thread 的数目,但是在 tomcat9.0.21中 poller thread 数目始终会为 1。poller thread 的核心功能主要由以前文章中介绍的 Poller 类来实现,对于每一个 poller 实例都有一个 NIO selector 实例,同时也有一个事件队列SynchronizedQueue对于每一个 poller thread 来说,都会去轮询队列 SynchronizedQueue,该队列的事件由 acceptor 线程(监听到新连接时)或者 tomcat io 线程(处理完请求之后保持长连接,添加读事件)放入,然后根据不同的事件对原始socket注册相应的读写事件。

BlockPoller线程tomcat NIO 架构中会有 block poller 线程,其核心功能由以前文章中 香港云主机介绍的 BlockPoller 类来实现,BlockPoller 实例会有一个 NIO selector 实例,同时也会拥有一个自己的事件队列实例SynchronizedQueue对于BlockPoller thread来说,会去轮询队列 SynchronizedQueue,该队列的对象(RunnableAdd类型)由 tomcat io 线程放入,然后根据不同的对象对原始 socket 注册相应的读写事件。看完了这篇文章,相信你对“Tomcat NIO中整体架构是怎么样的”有了一定的了解,如果想了解更多相关知识,欢迎关注开发云行业资讯频道,感谢各位的阅读!

相关推荐: Spring MVC中怎么利用webSocket保持长连接

本篇文章给大家分享的是有 香港云主机关Spring MVC中怎么利用webSocket保持长连接,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在pom.xml中加入包依赖Java后台实现代码前端使…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 08/17 18:58
下一篇 08/17 18:58

相关推荐