您的位置:首页 > 编程语言 > Java开发

New IO JAVA1.4特性

2016-10-12 19:35 267 查看
 其实就是多路复用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其实也一样依赖于系统性能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: