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
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!