一、NioEndpoint组件
Tomcat的NioEndPoint组件实现了I/O多路复用模型,接下来我会介绍NioEndpoint的实现原理。
1.总体工作流程
我们知道,对于Java的多路复用器的使用,无非是两步:
1.创建一个Seletor,在它身上注册各种感兴趣的事件,然后调用select方法,等待感兴趣的事情发生。
2.感兴趣的事情发生了,比如可以读了,这时便创建一个新的线程从Channel中读数据。
Tomcat的NioEndpoint组件虽然实现比较复杂,但基本原理就是上面两步。
我们先来看看它有哪些组件,它 一共包含LimitLatch、Acceptor、Poller、SocketProcessor和Executor共5个组件,它们的工作过程如下图所 示。
LimitLatch是连接控制器,它负责控制最大连接数,NIO模式下默认是10000,达到这个阈值后,连接请求 被拒绝。