![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
NIO
Master_Yoda
Named after the name of God,by your hands!
展开
-
NIO之Channels
Java NIO的通道类似流,但又有些不同: 既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。 通道可以异步地读写。 -通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。 也就是说我们是从通道读取数据到缓冲区,或者从缓冲区写入数据到通道。 JAVANIO中最重要的通道实现: FileChannel DatagramChannel SocketC...原创 2019-07-06 20:56:41 · 212 阅读 · 0 评论 -
NIO之Buffer
缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。 1 Buffer的基本用法 使用Buffer读写数据一般遵循以下四个步骤: 写入数据到Buffer 调用flip()方法 从Buffer中读取数据 调用clear()方法或者compact()方法 当向buffer写入数据时,buffer会记录下写了多少...转载 2019-07-07 09:39:19 · 176 阅读 · 0 评论 -
NIO之Scatter/Gather
Java NIO开始支持scatter/gather,scatter/gather用于描述从Channel中读取或者写入到Channel的操作。 **分散(scatter)**从Channel中读取是指在读操作时将读取的数据写入多个buffer中。因此,Channel将从Channel中读取的数据“分散(scatter)”到多个Buffer中。 **聚集(gather)**写入Channel是指在...转载 2019-07-07 10:29:44 · 215 阅读 · 1 评论 -
NIO之Selector
在JAVA NIO中,一个Selector(选择器)能够监听一个到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件,这个一个单独的线程可以管理多个channel,从而管理多个网络连接。 1 为什么使用Selector 仅用单个线程来处理多个Channels的好处是,只需要更少的线程来处理通道。事实上,可以只用一个线程处理所有的通道。对于操作系统来说,线程之间上下文切换的开销很大,而且...转载 2019-07-07 15:37:26 · 174 阅读 · 0 评论