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其实也一样依赖于系统性能。
旧的流式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其实也一样依赖于系统性能。
相关文章推荐
- New IO JAVA1.4特性
- Drag and Drop: New Data Transfer Capabilities in the JavaTM 2 Platform, Standard Edition (J2SETM), version 1.4
- java1.4升级到java1.5 新特性
- [Java 12 IO] PrintStream 打印流 new PrintStream(new FileOutputStream(new File("/home。。
- 尚硅谷java学习笔记——NIO(New IO)
- Java 7新特性总结 - Java IO
- solr 4.0 SolrException: Error opening new searcher java.io.FileNotFoundException 问题解决方案
- Java高级特性之new一个内部类
- java.io中常用的流的功能及特性
- 用Java的New IO开发网络协议
- java.io.IOException: The temporary job-output directory file:/usr/nutch1.4/runtime/local/sina/crawld
- 用Java的New IO开发网络协议
- Java 7新特性总结 - Java IO
- java new IO
- hadoop错误Ignoring exception during close for org.apache.hadoop.mapred.MapTask$NewOutputCollector@17bda0f2 java.io.IOException Spill failed
- spark1.4 读取hbase 0.96 报错 java.io.NotSerializableException: org.apache.hadoop.hbase.io.ImmutableBytes
- [Java IO]Java 平台非阻塞 I/O JDK1.4
- Java new io
- java.io中常用的流的功能及特性
- JAVA基础【1.4】《Java核心技术1》Java程序设计概述-Java JDK1.7新特性【收集】