通道之间的数据传输
在Java NIO中,如果两个通道中有一个是FileChannel,那你可以直接将数据从一个channel(译者注:channel中文常译作通道)传输到另外一个channel。
transferFrom()
FileChannel的transferFrom()方法可以将数据从源通道传输到FileChannel中(译者注:这个方法在JDK文档中的解释为将字节...
分类:
编程语言 时间:
2015-01-04 19:19:42
阅读次数:
225
Java NIO 概述
Java NIO 由以下几个核心部分组成:
ChannelsBuffersSelectors
虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Selector 构成了核心的API。其它组件,如Pipe和FileLock,只不过是与三个核心组件共同使用的工具类。因此,在概述中我将集中在这三个组件上。其它组件...
分类:
编程语言 时间:
2015-01-04 17:21:33
阅读次数:
257
java NIO的通道类似流,但又有些不同:
既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。
通道可以异步地读写。
通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。
正如上面所说,从通道读取数据到缓冲区,从缓冲区写入数据到通道。如下图所示:
Channel的实现
这些是Java NIO中最重要的通道的实现:...
分类:
编程语言 时间:
2015-01-04 17:16:14
阅读次数:
201
Java NIO中的Buffer用于和NIO通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。
缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。
Buffer的基本用法
使用Buffer读写数据一般遵循以下四个步骤:
写入数据到Buffer
调用fli...
分类:
编程语言 时间:
2015-01-04 17:12:59
阅读次数:
180
Reactor模式和NIO本文可看成是对Doug Lea Scalable IO in Java一文的翻译。当前分布式计算 Web Services盛行天下,这些网络服务的底层都离不开对socket的操作。他们都有一个共同的结构:1. Read request2. Decode request3. ...
分类:
其他好文 时间:
2014-12-31 17:48:08
阅读次数:
291
Java NIO的核心部件: Buffer Channel Selector Buffer 是一个数组,但具有内部状态。如下4个索引: capacity:总容量 position:下一个要读取/写入的元素索引 limit:限制,第一个不能读取/写入的元素索引 mark:位置标记,重置position...
分类:
编程语言 时间:
2014-12-22 17:34:31
阅读次数:
252
nio学习设计的几个概念要弄清楚
我们常常见到同步、异步、阻塞和非阻塞四种调用方式。这些方式彼此概念并不好理解。下面是我对这些术语的理解。
同步
所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。按照这个定义,其实绝大多数函数都是同步调用(例如sin, isdigit等)。但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完...
分类:
其他好文 时间:
2014-12-11 15:53:28
阅读次数:
152
工作模式:客户端代码:package demos.nio.socketChannel;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.net.InetSocketAddress;import ja...
分类:
其他好文 时间:
2014-08-25 16:40:34
阅读次数:
212
NIO的效率要高于标准IO,因为NIO将最耗时的IO操作(填充和提取缓冲区)转移会操作系统。NIO以块为单位传输数据,相比标准IO的以字节为单位效率要高很多。通道和缓冲时NIO的核心对象,每个NIO操作都要使用到它们。通道是对流的模拟,但与流不同,通道的传输是双向的,一个通道可以同时用于读和写。缓冲...
分类:
其他好文 时间:
2014-08-18 10:43:53
阅读次数:
210
NIO引入了三个概念:Buffer 缓冲区Channel 通道selector 选择器1、java.io优化建议操作系统与Java基于流的I/O模型有些不匹配。操作系统要移动的是大块数据(缓冲区),这往往是在硬件直接存储器存取(DMA)的协助下完成的。I/O类喜欢操作小块数据——单个字节、几行文本。...
分类:
其他好文 时间:
2014-07-22 00:04:34
阅读次数:
416