New IO JAVA1.4特性

来源:互联网 发布:电吉他入门 知乎 编辑:程序博客网 时间:2024/06/10 14:31
 其实就是多路复用IO接口。
旧的流式IO是基于流的,而且是单向通讯(要么必须是inputstream,要么是outputstream),还是阻塞的。
NIO他是双向通讯,并且是有了selector对象,变成非阻塞式的。
他的核心类有3个:
1.channel通道
2.buffer缓冲区
3.selector多路复用选择器

BIO、NIO、AIO

BIO:同步阻塞,应用层调用系统IO后会阻塞在那,等待系统同步任务完成。
NIO:  同步非阻塞,应用层和系统IO层多了台复用机,应用者调用复用机,复用机会立刻返回,应用者可以继续做自己的任务(不阻塞),下一次再询问一次,不停的做间歇性询问,直到系统同步任务完成。
AIO:异步非阻塞,应用者直接调用系统IO,同时应用者向系统注册IO回调,然后应用者可以去做自己的实现,等系统IO完成的时候就会调用应用者注册的IO回调函数。(JDK 1.7才有)


BIO:适用线程比较少,且固定的应用。
NIO:适用线程比较多,并且连接比较短。如聊天软件
AIO:适合线程比较多,并且连接比较长,如上传多张相册照片。(JDK 1.7才有)


NIO是主动多次询问系统IO实现非阻塞,AIO是系统内核实现事件驱动机制,达到异步机制。

在实际中,用户无论使用NIO和AIO感觉是都是异步的,
但是区别在于,NIO的事件驱动的利用复用机的原理在用户层实现的。而AIO的事件驱动是系统内核层实现的(JDK 1.7才有) 。

AIO的性能比较依赖OS内核性能,BIO、NIO其实也一样依赖于系统性能。
0 0
原创粉丝点击