nio和bio的区别

1.bio:一个client连接由一个socket接收连接信息,并把客户端信息交由一个线程去处理。客户端中的socket的outputStream传递的数据给服务端的inputstream接收,服务端把响应数据通过outputStream返回给客户端的inputstream响应。
2.nio:一个client连接由一个chancel接收,每一个chancel需要通过register注册到selector上面,当有selector监控到有数据过来了,那么就通过selector.select()方法,知道是哪个通道传递的消息。然后把这个消息交由线程去处理。客户端中的channel和服务端中的channel是通过buffer来接收和传递数据。
3.selector原理:
channel和事件key注册到selector上面,selector把这个key(channel和状态)放在一个keys数组里面,当有数据的时候,通过遍历这个keys,找到是哪个通道的状态(可读,可写)改变,然后把这个key通过select方法放到selectkeys中让线程去处理。

你可能感兴趣的:(netty,nio和bio的原理解剖)