java -nio 模型
ServerSocketChannel注册到Selector,同时订阅SelectionKey.OP_ACCEPT事件,工作线程内用while(true)循环,不断的遍历Selector里面,接收到通道事件:
1.如果当前遍历到的是SelectionKey.OP_ACCEPT事件,那么取到SelectionKey 对象关联的SocketChannel,再通过SocketChannel.register(selector, SelectionKey.OP_READ)把SocketChannel注册到Selector并订阅SelectionKey.OP_READ事件。
2.如果当前遍历到的是SelectionKey.OP_READ事件,就把SocketChannel里面的数据,读取到ByteBuffer,再从ByteBuffer读取到应用程序中使用。