nio
zhuzhufxz
这个作者很懒,什么都没留下…
展开
-
NIO笔记1_NIO简介与缓冲区Buffer
Java NIO 简介Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IOAPI,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。 Java NIO 与IO 的主要区别 通道和缓冲区Java NIO系统的核心在于:通道(Channel...原创 2018-04-22 19:36:16 · 136 阅读 · 0 评论 -
NIO笔记7_阻塞与非阻塞(下)
/* * 使用 NIO 完成网络通信的三个核心: * * 1. 通道(Channel):负责连接 * * java.nio.channels.Channel 接口: * |--SelectableChannel * |--SocketChannel * |--ServerSocketChannel * |--DatagramChann...原创 2018-04-30 20:03:42 · 114 阅读 · 0 评论 -
NIO笔记8_DatagramChannel
Java NIO中的DatagramChannel是一个能收发UDP包的通道。操作步骤:打开DatagramChannel接收/发送数据public class TestNonBlockingNIO2 { @Test public void send() throws IOException{ DatagramChannel dc = DatagramChannel.open()...原创 2018-04-30 20:13:18 · 104 阅读 · 0 评论 -
NIO笔记9_管道(Pipe)
JavaNIO 管道是2个线程之间的单向数据连接。Pipe有一个source通道和一个sink通道。数据会被写到sink通道,从source通道读取。public class TestPipe { @Test public void test1() throws IOException{ //1. 获取管道 Pipe pipe = Pipe.open(); //2. 将缓冲...原创 2018-04-30 20:14:33 · 1219 阅读 · 0 评论 -
NIO笔记2_直接与非直接缓冲区
一、缓冲区(Buffer):在 Java NIO 中负责数据的存取。缓冲区就是数组。用于存储不同数据类型的数据 根据数据类型不同(boolean除外),提供了相应类型的缓冲区: ByteBuffer CharBuffer ShortBuffer IntBuffer LongBuffer FloatBuffer DoubleBuffer 上述缓冲区的管理方式几乎一致,通过 allocate()...原创 2018-04-23 23:18:53 · 180 阅读 · 0 评论 -
NIO笔记3_通道Channel
通道(Channel)通道(Channel):由java.nio.channels 包定义的。Channel 表示IO 源与目标打开的连接。Channel 类似于传统的“流”。只不过Channel 本身不能直接访问数据,Channel 只能与Buffer 进行交互。Java 为Channel 接口提供的最主要实现类如下:•FileChannel:用于读取、写入、映射和操作文件的通道。•Datagr...原创 2018-04-23 23:24:53 · 400 阅读 · 0 评论 -
NIO笔记4_分散(Scatter)和聚集(Gather)
分散读取(Scattering Reads)是指从Channel 中读取的数据“分散”到多个Buffer 中。注意:按照缓冲区的顺序,从Channel 中读取的数据依次将Buffer 填满。聚集写入(Gathering Writes)是指将多个Buffer 中的数据“聚集”到Channel。注意:按照缓冲区的顺序,写入position 和limit 之间的数据到Channel 。 //分散和聚集...原创 2018-04-24 16:47:14 · 171 阅读 · 0 评论 -
NIO笔记5_字符集
Java NIO提供了字符集,实现对文件编码,解码的更好支持,用字符集可以获取系统支持的编码格式,在获取文件时,可以指定解码格式,然后进行输出时,指定编码的格式,避免获取和输出的文件时乱码。 availableCharsets():获取系统可支持的编码格式 canEncode() :通知此 charset 是否支持编码 newDecoder() :为此 charset 构造新的解码器。 ne...原创 2018-04-24 17:04:32 · 124 阅读 · 0 评论 -
NIO笔记6_阻塞与非阻塞(上)
传统的IO 流都是阻塞式的。也就是说,当一个线程调用read() 或write() 时,该线程被阻塞,直到有一些数据被读取或写入,该线程在此期间不能执行其他任务。因此,在完成网络通信进行IO 操作时,由于线程会阻塞,所以服务器端必须为每个客户端都提供一个独立的线程进行处理,当服务器端需要处理大量客户端时,性能急剧下降。Java NIO 是非阻塞模式的。当线程从某通道进行读写数据时,若没有数据可用...原创 2018-04-24 17:22:45 · 198 阅读 · 0 评论