nio
1. bio 一个连接一个线程, 意思是serverSocket.accept() 就建立一个线程,这里accept() read() 线程都会阻塞。
2. nio 一个请求一个线程, 把服务器通道ServerSocketChannel 感兴趣的事件SelectionKey.OP_ACCEPT 注册到通道管理器Selector上,
轮询selector, 如果有accept事件到达,SocketChannel channel = server.accept(); 获取客户端通道。在selector上注册客户端通道
SelectionKey.OP_READ事件。 当轮询selector时,如果有可读事件,再去用一个线程去处理请求。
其中轮询selector是有一个单线程处理(就是一个while循环去selector.select(); 判断是有注册的事件来了)