NIO
鹿克阿特米
这个作者很懒,什么都没留下…
展开
-
Java NIO allocate、put、flip、get、rewind、clear、mark、reset
Java NIO系统的核心在于:通道(channel)和缓冲区(buffer)。通道表示打开到IO设备的连接。若需要使用NIO系统,需要获取用于连接IO设备的通道以及用于容纳数据的缓冲区。然后操作缓冲区,对数据进行处理。Channel负责传输,Buffer负责存储。缓冲区(Buffer):在Java NIO中负责数据的存储,缓冲区就是数组,用于存储不同数据类型的数据。根据数据类型不同,提供了相...原创 2019-09-13 04:33:32 · 518 阅读 · 0 评论 -
直接缓冲区 与 非直接缓冲区
非直接缓冲区:通过allocate()方法分配缓冲区,将缓存区建立在JVM内存中static ByteBuffer allocate(int capacity)创建的缓冲区,在JVM中内存中创建,在每次调用基础操作系统的一个本机IO之前或者之后,虚拟机都会将缓冲区的内容复制到中间缓冲区(或者从中间缓冲区复制内容),缓冲区的内容驻留在JVM内,因此销毁容易,但是占用JVM内存开销,处理过程中...转载 2019-09-13 04:55:54 · 265 阅读 · 0 评论 -
通道 Channel
: 用于原节点与目标节点的连接,类似于传统的流。在Java NIO中负责缓冲区中数据的传输,Channel本身不能直接访问数据,因此需要配合缓冲区buffer进行传输通道主要实现类:java.nio.channels.Channel 接口实现:FileChannelSocketChannelServerSockerChannelDatagramChannel获取通道:Java 针...原创 2019-09-13 21:09:02 · 337 阅读 · 0 评论 -
NIO 阻塞与非阻塞 SocketChannel、Selector、DatagramChannel
使用NIO完成网络通信三个核心:1.通道(Channel):负责连接2.缓冲区(Buffer):负责数据存取3.选择器(Selector):是SelectableChannel的多路复用器,用于监控SelectableChannel的I/O状况FileChannel不能切换成非阻塞模式阻塞式: @Test public void bioSocketClient() { ...原创 2019-09-13 23:53:50 · 577 阅读 · 0 评论 -
NIO 管道(pipe) Pipe.SinkChannel、Pipe.SourceChannel
Java NIO管道是2个线程之间的单向数据连接,Pipe有一个source通道和一个sink通道。数据会被写到sink通道,从source通道读取public class PipeDemo { public static void main(String[] args) { try { Pipe finalPipe = Pipe.open(...原创 2019-09-14 00:46:19 · 559 阅读 · 0 评论