main启动tomcat
maven:
https://mvnrepository.com/art...
启动:
endpoint
非阻塞模式:
public class Http11NioProtocol extends AbstractHttp11JsseProtocol<NioChannel> {
public Http11NioProtocol() {
super(new NioEndpoint());
}
}
异步模式:
public class Http11Nio2Protocol extends AbstractHttp11JsseProtocol<Nio2Channel> {
public Http11Nio2Protocol() {
super(new Nio2Endpoint());
}
}
过程分析
1、指定 Protocol,初始化相应的 Endpoint,接下来是 NioEndpoint;
2、init 过程:在 NioEndpoint 中做 bind 操作;
3、start 过程:启动 worker 线程池,默认启动 1 个 Acceptor 和 2 个 Poller,可配;
4、Acceptor 获取到新的连接后,getPoller0() 获取其中一个 Poller,然后 register 到 Poller 中;
5、Poller 循环 selector.select( * ),如果有通道 readable,那么在 processKey 中将其放到 worker 线程池中。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。