Jetty源碼閱讀 - ServerConnector

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
--------------------- 
作者:CatcherTheRye 
來源:CSDN 
原文:https://blog.csdn.net/catchertherye/article/details/79592700 
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章