![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
NIO
_东极
少年锦时
展开
-
NIO缓存
传统的IO和NIO的区别:传统的IO是面向流,阻塞式IO,单向的NIO:基于通道的,通道内的缓冲区,双向的,非阻塞的,有选择器通道和缓冲区通道表示要打开的IO设备(文件/套接字)的连接,需要使用NIO系统,需要获取用于连接IO设备的通道以及用于容纳数据的缓冲区,然后操作缓冲区对数据进行处理总:channel负责传输,Buffer负责存储缓冲区负责数据的存取,缓冲区是数组,用于存储不同...原创 2018-12-23 19:57:10 · 406 阅读 · 0 评论 -
NIO通道
通道用于源节点与目标节点的连接,在java NIO中负责缓冲区中数据传输,Channel本身不存储数据,因此需要配合缓冲区进行传输通道的主要实现类java.nio.channel.Channel接口:FileChannelSocketChannelServerSocketChannelDatagramChannel获取通道1.java针对通道类提供了getChannel()方法...原创 2018-12-23 21:12:37 · 288 阅读 · 0 评论 -
NIO分散读取与聚集写入
分散(Scatter)与聚集(Gather)分散读取(Scattering Reads) : 将通道中的数据分散到多个缓冲区中聚集写入(Gathering Writes) : 将多个缓冲区中的数据聚集到通道中//分散和聚集@Testpublic void test4() throws IOException{ RandomAccessFile raf1 = new RandomA...原创 2018-12-23 21:46:29 · 454 阅读 · 1 评论 -
NIO阻塞与非阻塞式
NIO的非阻塞模式NIO完成核心的东西是一个选择器,Selector,选择器主要是将每一个传输数据的通道注册到选择器上,选择器作用是监控这些IO的状态(读,写,连接状态),然后用选择器监控通道的状况,等待所有的线程准备就绪时,选择器将任务分配到服务端一个或者多个线程上再去运行NIO完成网络通信的三个核心1.通道(Channel):负责连接java.nio.channels.Channel ...原创 2018-12-24 11:03:12 · 1457 阅读 · 2 评论 -
NIO的pipe管道
管道(Pipe)Java的NIO管道是2个线程之间的单向数据连接,Pipe有一个source通道和一个sink通道,数据会被写到sink通道,从source通道读取package com.nio;import org.junit.Test;import java.io.IOException;import java.nio.ByteBuffer;import java.nio.ch...原创 2018-12-24 11:16:13 · 485 阅读 · 0 评论 -
NIOUDP方式
package com.nio;import org.junit.Test;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.DatagramChannel;import java.nio.channels....原创 2018-12-24 11:49:16 · 509 阅读 · 0 评论