NIO和AIO

一、NIO

1、简介
(1)NIO是New I/O的简称,表示新的一套Java I/O标准
(2)NIO是基于块Block的,以块为基础单位处理数据
(3)为所有的原始类提供Buffer缓存支持
(4)增加通道Channel对象,作为新的原始I/O抽象
(5)支持锁和内存映射文件的文件访问接口
(6)提供了基于Selector的异步网络I/O

2、Buffer
(1)

FileInputStream fin=new FileInputStream(new File("d:\\xxx.tmp"));
FileChannel fc=fin.getChannel()
ByteBuffer byteBuffer=ByteBuffer.allocate(1024)
fc.read(byteBuffer)
fc.close()
byteBuffer.flip()

(2)三个重要的参数:位置position、容量capactiy、上限limit
(3)相关方法

public final Buffer rewind():将position置零,并清除标志位mark
public final Buffer clear():将position置零,同时将limit设置为capacity的大小,并清除了标志mark
public final Buffer flip():先将limit设置到positon所在位置,然后将position设置为0,并清除标志位mark,通常在读写转换时候使用

二、网络编程

1、问题
为每一个客户端使用一个线程,如果客户端出现延时等异常,线程可能会被占用很长时间,因为数据的准备和读取都在这个线程中,此时,如果客户端数量众多,可能会消耗大量的系统资源

2、解决
(1)非阻塞的NIO
(2)数据准备好了再工作

3、总结
(1)NIO会将数据准备好后,再交由应用进行处理,数据的读取过程依然在应用线程中完成
(2)节省数据准备时间(因为Selector可以复用),不会加快IO,只是在读完后进行通知
(3)使用回调函数,进行业务处理

展开阅读全文
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读