Jetty源码阅读 - ServerConnector
2018-03-17 15:42
295 查看
Jetty ServerConnector
阅读Jetty源码需要Java NIO的知识refs:Java NIO浅析
Java NIO模型的关键类是
ServerSocketChannel
SocketChannel
Selector这两个,其中
ServerSocketChannel用于创建服务端端口的监听,且提供了
#accept方法用于返回
SocketChannel。
SocketChannel负责完成与client端的通信以及在Selector中注册关心事件。非阻塞IO的关键是
Selector利用操作系统底层提供的多路复用IO的机制,提供了注册监听Socket状态的事件,并在关心事件准备好后通过
#selectedKeys()方法返回
SelectionKey的集合,
SelectionKey中包含了注册的
SocketChannel以及关心事件
interestOps。
有了上面这些知识一个简单的异步IO的服务的流程很清楚了
1. 通过
ServerSocketChannel创建一个端口的监听,比如
8080
2. 初始化一个
Selector用户事件的注册以及事件的通知。
2. 通过一个while循环等待
ServerSocketChannel.accept()的返回
3.
SocketChannel注册到
Selector等待事件的到达
4. 通过一个while循环等待
Selector.acceptKeys()返回
5. 处理事件准备好的
SocketChannel
因此一个简单的异步IO的服务代码如下:
相关文章推荐
- jetty源码阅读总结1
- jetty源码阅读总结1
- Spark Netty与Jetty (源码阅读十一)
- Argo源码阅读(一):Jetty
- jetty源码阅读总结1
- 【Java】【Flume】Flume-NG源码阅读之AvroSink
- 阅读UGUI源码 一
- Golang Http Server源码阅读
- YII2 源码阅读 综述
- Redis源码阅读计划
- NGINX----源码阅读---配置文件解析(由简到杂)
- STL源码阅读-iterator
- uboot源码阅读(三)江湖的历史 uboot第一阶段start.S
- List源码阅读
- caffe 源码阅读笔记(0):基本概述
- redis源码阅读步骤
- JDK源码阅读之Map接口和Set接口
- Go的http源码阅读笔记
- JDK源码阅读之Queue接口和Deque接口
- 云之讯官方测试Demo音频版源码阅读