NIO
征程0421
这个作者很懒,什么都没留下…
展开
-
NIO之MappedByteBuffer的使用
NIO提供了MappedByteBuffer,可以让文件直接在内存(堆外内存)中进行修改,而如何同步到文件由NIO来完成。 下面我们来看看一个例子先创建一个文件1.txt,里面的内容为hello world 1hello word! 编写一个程序对文件内容进行修改public abstract MappedByteBuffer map(MapMode mode, long po...原创 2020-01-15 10:50:56 · 287 阅读 · 0 评论 -
NIO之选择器
阻塞与非阻塞 阻塞/非阻塞关注的是程序在调用结果时的状态 阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。 非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。 我们所学的传统IO是阻塞式的,NIO中提供了非阻塞式的用法,是通过选择器(Selector)监听通道实现的。下面我们会以NIO编写一个阻塞式和非阻塞式的网络通信 阻塞式网络通信 废话不多说,...原创 2020-01-13 09:29:14 · 158 阅读 · 0 评论 -
NIO之分散与聚集
分散和聚集的理解 分散读取 是指从Channel中读取的数据“分散”到多个buffer中注:按照缓冲区的顺序,从Channel中读取的数据依次将buffer填满代码实现如下 1 @Test 2 public void test5() throws Exceptio...原创 2020-01-12 19:31:49 · 309 阅读 · 0 评论 -
NIO之通道
通道的理解 通道是由java.nio.channels包定义的。Channel表示IO源与目标打开的连接。Channel类似于传统的“流”。只不过Channel本身不能直接访问数据,Channel只能与buffer进行交互。 通道的主要实现类 类 解析 FileChannel 本机IO,用于本地文件传输 SocketChannel 网络IO,使用TCp协议 ServerSo...原创 2020-01-12 18:44:26 · 228 阅读 · 0 评论 -
NIO之直接缓冲区与非直接缓冲区
直接缓冲区与非直接缓冲区 直接缓冲区与非直接缓冲区的理解 字节缓冲区要么是直接的,要么是非直接的。如果为直接字节缓冲区,则」ava虛拟机会尽最大努力直接在此缓冲区上执行本机/o操作。也就是说,在每次调用基础操作系统的一个本机/o操作之前(或之后),虛拟机都会尽量避免将缓冲区的内容复制到中间缓冲区中(或从中间缓冲区中复制内容)。 直接字节缓冲区可以通过调用此类的 allocate Direct()...原创 2020-01-12 15:16:53 · 146 阅读 · 0 评论 -
NIO之简单入门
在学习Java的过程中,相信大家都有学过IO流吧?那NIO大家有没有了解呢?今天我们就来看看强大的NIO。对比IO流,看看哪个更加强大。 NIO与IO的主要区别 废话不多说,我们来看一张表 面向流 面向流的数据传输是在管道建立连接后单向进行数据传输,在我们学习Java的时候InputStream和OutputStream就是对应输入流和输出流,它们的传输方向是单向的。 面向缓冲区 面向缓...原创 2020-01-12 11:07:07 · 105 阅读 · 0 评论