- 网络IO实现方式分为BIO(阻塞IO)、线程池伪异步IO、NIO(非阻塞IO)、AIO(异步非阻塞IO);
- 异步、同步是说是否允许并发,阻塞、非阻塞是说是否等待结果;
- NIO中重要概念缓冲区Buffer、通道Channel、多路复用器Selector;
- Buffer实现类都是基本类型的buffer,例如IntBuffer,实现就是int数组+四个索引(mark备份读取位置;position已读写到的位置;limit可读写的最大界限;capacity容量,数组长度);
- ByteBuffer使用直接缓冲区,不同于其他buffer使用的jvm堆栈;
- 通道Channel是用于读写数据的对象,例如SocketChannel,能通过TCP读写网络中的数据;FileChannel从文件中读写数据;通过继承SelectableChannel可向Selector注册以获取就绪的Channel对象;
- Selector是SelectableChannel对象的多路复用器,Channel可注册的事件可在validOps方法查看;Channel不能同时注册OP_ACCPET和OP_READ或同时注册OP_CONNECT和OP_WRITE,对底层来说只有read和write两种事件,如下:OP_ACCEPT、OP_READ == Read 和OP_CONNECT、OP_WRITE == Write
网友评论