随笔分类 -  【Java NIO -- IO高级进阶】

摘要:Java NIO 管道是2个线程之间的单向数据连接。 Pipe有一个source通道和一个sink通道。数据会被写到sink通道,从source通道读取。 举个例子: 阅读全文
posted @ 2017-06-27 21:47 西北野狼 编辑
摘要:Java NIO中的DatagramChannel是一个能收发UDP包的通道。操作步骤:打开 DatagramChannel接收/发送数据 代码举例: 阅读全文
posted @ 2017-06-27 20:42 西北野狼 编辑
摘要:选择器(Selector) 阻塞式IO流操作示例: 非阻塞式IO流 一、使用 NIO 完成网络通信的三个核心: 1. 通道(Channel):负责连接 java.nio.channels.Channel 接口: |--SelectableChannel |--SocketChannel |--Ser 阅读全文
posted @ 2017-06-27 16:23 西北野狼 编辑
摘要:通道(Channel):由 java.nio.channels 包定义的。Channel 表示 IO 源与目标打开的连接。Channel 类似于传统的“流”。只不过 Channel本身不能直接访问数据,Channel 只能与Buffer 进行交互。 Java 为 为 Channel 接口提供的最主要 阅读全文
posted @ 2017-06-27 10:08 西北野狼 编辑
摘要:直接缓冲区与非直接缓冲区: 非直接缓冲区:通过 allocate() 方法分配缓冲区,将缓冲区建立在 JVM 的内存中直接缓冲区:通过 allocateDirect() 方法分配直接缓冲区,将缓冲区建立在物理内存中。可以提高效率 非直接缓冲区: 直接缓冲区: 代码示例: 阅读全文
posted @ 2017-06-27 00:02 西北野狼 编辑
摘要:缓冲区(Buffer): 一个用于特定基本数据类型的容器。由 java.nio 包定义的,所有缓冲区都是 Buffer 抽象类的子类。Java NIO 中的 Buffer 主要用于与 NIO 通道进行交互,数据是从通道读入缓冲区,从缓冲区写入通道中的。 Buffer 就像一个数组,可以保存多个相同类 阅读全文
posted @ 2017-06-26 19:19 西北野狼 编辑
摘要:Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用 的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。 Java NIO 和 阅读全文
posted @ 2017-06-26 18:13 西北野狼 编辑