您的位置:首页 > 编程语言 > Java开发

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的服务代码如下:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java jetty nio 源码