美文网首页
NIO 总结

NIO 总结

作者: tdwmarlboro | 来源:发表于2018-05-25 14:53 被阅读0次

核心部分:

Buffer、Channel、Selector

NIO操作面向缓冲区,数据从Channel读取到Buffer缓冲区,随后在Buffer 中处理数据。

NIO把它支持的I/O对象抽象为Channel,Channel 又称“通道”,类似于原I/O中的流(Stream)

1、流是单向的,通道是双向,可读可写

2、流读写是阻塞的,通道是可以异步读写

3、流中的数据是可以选择性的先读到缓存中,通道的数据总是要先读到一个缓存中,或 从缓存中写入

File file = new RandomAccessFile("data.txt", "rw");

FileChannel channel = file.getChannel();

ByteBuffer buffer = ByteBuffer.allocate(48);

int bytesRead = channel.read(buffer);

while (bytesRead != -1) {

    System.out.println("Read " + bytesRead);

    buffer.flip();

    while(buffer.hasRemaining()){

        System.out.print((char) buffer.get());

    }

    buffer.clear();

    bytesRead = channel.read(buffer);

}

file.close();

Channel能在非阻塞模式下运行。一个非阻塞模式下的Channel不会让调用线程睡眠。请求的操作要么立刻完成、要么返回一个结果告知什么都没做。

FileChannel是可读可写的Channel,它必须阻塞,不能用在非阻塞模式中。面向数据库I/O的非阻塞风格并不适合面向文件的操作。

FileChannel对象不能被直接创建。一个FileChannel实例只能通过在打开的文件对象(RandomAccessFile、FileInputStream、FileOutputStream)上调用getChannel()得到。

Selector 实现原理:
SocketChannel、ServerSocketChannel 和Selector 的实例初始化都通过SelectorProvider类实现

选择器(Selector)提供了挑选可用状态Channel的能力,从而实现多路复用的I/O。

IO:

流是一个数据的序列:一个程序使用输入流从一个源头读取数据;另一个程序使用输出流写入并发送数据到目的地。

InputStream、OutputStream、BufferInputStream、BUffeerOutputStream

相关文章

  • NIO教程 ——检视阅读(上)

    NIO教程 ——检视阅读 参考 BIO,NIO,AIO 总结 Java NIO浅析 Java NIO 教程——极客...

  • java nio总结 行为分析

    参考 一篇相当全面的Java NIO教程 目的 探究nio读写何时是阻塞/非阻塞的 总结nio读写何时会触发 总结...

  • Netty图解(一):为何会有netty

    普通的NIO通信方式,服务端如下: 普通的NIO通信方式,客户端如下: 普通的NIO通信方式,执行和结果: 总结:...

  • 使用Java NIO完成文件上传

    使用NIO完成文件上传处理 参考文章 关于NIO文件操作的文章可以参阅:nio操作文件 代码 总结 可见,使用NI...

  • NIO 总结

    核心部分: Buffer、Channel、Selector NIO操作面向缓冲区,数据从Channel读取到Buf...

  • 1.Hello NIO

    这段时间学习了一下NIO,现在做一个简单的总结吧。 什么是NIO? NIO(New IO),也是JDK自带的,不是...

  • BIO,NIO,AIO 总结

    BIO,NIO,AIO 总结 Java 中的 BIO、NIO和 AIO 理解为是 Java 语言对操作系统的各种 ...

  • BIO,NIO,AIO 总结

    BIO,NIO,AIO 总结 Java 中的 BIO、NIO和 AIO 理解为是 Java 语言对操作系统的各种 ...

  • NIO(一)Channel Buffer Selector

    Java NIO 针对学习并发编程网的资料进行总结转载文章: 转载自并发编程网 – ifeve.com NIO为什...

  • Java NIO总结

    NIO是Java 1.4开始引入的,目的是替代标准IO,它采用了与标准IO完全不同的设计模式和工作方式,这里就来总...

网友评论

      本文标题:NIO 总结

      本文链接:https://www.haomeiwen.com/subject/hjtazxtx.html