java笔记-NIO

    最近一段时间在看别人整理的Java NIO笔记,就想自己把我理解的NIO记录下来。

    IO与NIO的区别,首先IO是面向流操作的,每次从流中读一个或多个字节,直至读取所有字节;NIO是面向缓冲区(这边新加Buffer)操作,添加capital(容量)、position(位置)、limit(限制)概念,capital>=limit>=0,每次读写操作的范围是position~limit;

    然后IO是阻塞IO,NIO是非阻塞IO,关于阻塞与非阻塞IO我的理解是:原先使用IO流操作读写,程序需要明确知道这次IO操作是否成功,否则程序一直阻塞在那边不会往下执行;NIO的读写操作是数据从通道(channel)写入缓存区(Buffer)或者缓存区(Buffer)写入通道(channel),当线程发起发起需要读数据的时候(请求channel.read写入buffer),线程不需要等待channel.read完全写入,就可以继续执行。

    最后NIO新增一个选择器(selectors),允许一个线程监听多个通道(channel),可以这样理解,线程可以根据不同通道的情况做出相对于的反应操作(其实我一直觉得可不可以理解成消息中间件MQ的监听,监听chnnel相对于监听MQ的队列,队列有消息监听线程消费这条消息,监听channel有读的请求,线程read buffer)。

    感觉自己一直还是懵懵懂懂,也不清楚理解的对不对,欢迎各位来指错交流,后续贴上代码。

猜你喜欢

转载自blog.csdn.net/qq_33243189/article/details/80162945