JAVA NIO
Java NIO 的学习
南瓜灯cc
减法即加法
展开
-
Java NIO的非阻塞式网络通讯
之前说过NIO与传统IO不同有一点是NIO是非阻塞的,当线程从某通道进行读写数据时,若没有数 据可用时,该线程可以进行其他任务。线程通常将非阻塞 IO 的空闲时间用于在其他通道上执行 IO 操作,所以单独的线程可以管理多个输入和输出通道。因此,NIO 可以让服务器端使用一个或有限几个线程来同时处理连接到服务器端的所有客户端。 在使用的时候,需要设置相应的管道为非阻塞的,这里会用到选择器,相应的事原创 2017-05-11 15:39:26 · 880 阅读 · 0 评论 -
Java NIO的Scatter与Gather
Scatter(分散):分散读取,从管道Channel中读取的数据分散到一个或者多个缓冲区Buffer中,分散的时候会依次的按缓冲区的顺序一个一个的进行。 Gather(聚集):聚集写入,把缓冲区position到limit之间的数据依次的写入到管道中。 这样,一个大文件就可以分割成许多小的文件进行传输。 其示意图如下: 代码实现如下:public class Demo06_ScotterA原创 2017-05-11 15:12:54 · 872 阅读 · 0 评论 -
Java NIO的Channel
NIO中通道由 java.nio.channels 包定义的。Channel 表示 IO 源与目标打开的连接。Channel 类似于传统的“流”。只不过 Channel本身不能直接访问数据,Channel 只能与Buffer 进行交互。原创 2017-05-11 14:52:37 · 587 阅读 · 0 评论 -
Java NIO的Buffer
前面说到的NIO中Buffer一个用于保存特定基本数据类型的容器,其底层就是一个数组。 可以看到,基本类型除了boolean,其他的都对应一个Buffer的实现类。对于抽象类Buffer,需要理解其以下几个属性: private int mark = -1; //标志位,标记后能使调用reset方法能够恢复到标记时的位置 private int position = 0; //相当原创 2017-05-11 12:14:27 · 465 阅读 · 0 评论 -
Java NIO 与IO的区别
在jdk1.4中,引入了NIO(NEW IO),其与传统的IO有着很大的差别,具体表现在:1:面向流与面向缓冲区传统IO面向流的,意味着每次从流中读取一个字节或多个字节,直到读取完所有字节,而没有缓冲的,想要缓冲的就得使用相应的缓冲流。对于InputStream与OutputStream要么是输入流,要么是输出流而不能复用。NIO是面向缓冲区的,说道缓冲区就必须要提到通道,什么是通道与缓冲区?可以这原创 2017-05-11 10:19:42 · 709 阅读 · 0 评论