JAVA基础之——JDK分析io、nio

在哪儿:jdk\jre\lib\rt.jar

package java.io;  

package java.nio;

1 分类

1.1 IO

持久化序列化对象并压缩步骤

  new FileOutputStream  文件输出流,用于向文件进行写入操作。

  BufferedOutputStream缓冲输出流,为另外一个输出流添加缓冲功能。

  ZipOutputStream

  ObjectOutputStream对象输出流,用来对基本数据或对象提供持久化存储。

  writeObject

1.2 NIO 

1.2.1 channels:包含socket file pipe三种管道

1.2.2 buffer

  Buffer CharBuffer  DoubleBuffer FloatBuffer  IntBuffer  LongBuffer ShortBuffer

1.2.3 charset字符编码

  CharsetDecoder将字节转换成字符序列

  CharsetEncoder将字符序列转换成字节

1.2.4 selector 

 

2 区别

IO 面向流 阻塞IO  
NIO 面向缓存 非阻塞IO 选择器

 

3 阻塞和非阻塞区别

  IO阻塞:当某个事件执行时,如果请求操作未满足,则一直阻塞,直至条件满足。

  NIO非阻塞:当某件事件执行时,如果请求操作未满足,不会一直阻塞,而是会立即返回一个标志信息告知条件不满足。

 

4 应用场景

  NIO比IO读取效率高,缺陷是NIO是面向缓冲区的操作,处理之前必须对缓冲区数据的完整性进行判断,如果数据不完整的话,NIO的读取就不存在任何意义,因此NIO每次数据处理之前都要检测缓冲区数据的完整性。

  如果管理的是成千上万个连接,但是这些连接每次只是发送少量的数据,例如我们常用的聊天服务器,选择NIO。

  如果是少量连接,而这些连接每次都要发送大量的数据,选择IO。

 

posted @ 2018-11-09 17:30  sun-sailing  阅读(425)  评论(0)    收藏  举报