![](https://img-blog.csdnimg.cn/2019092715111047.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java NIO
Java NIO
陈彬_smile
待到山花烂漫时,她在丛中笑。
展开
-
Java NIO(二) Channel
Java NIO的通道类似流,但又有些不同:既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。 通道可以异步地读写。 通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。正如上面所说,从通道读取数据到缓冲区,从缓冲区写入数据到通道。Channel的实现这些是Java NIO中最重要的通道的实现:FileChannel DatagramChannel SocketChannel ServerSocketChannelFileChan原创 2020-06-24 08:26:11 · 69 阅读 · 0 评论 -
Java NIO(八)Java NIO与IO
Java NIO和IO的主要区别下表总结了Java NIO和IO之间的主要差别,我会更详细地描述表中每部分的差异。IO NIO面向流 面向缓冲阻塞IO 非阻塞IO无 选择器面向流与面向缓冲Java NIO和IO之间第一个最大的区别是,IO是面向流的,NIO是面向缓冲区的。Java IO面向流意味着每次从流中读一个或多个字节,直至读取所有字节,它们没有被缓存在任何地方。此外,它不能...转载 2020-06-24 08:32:39 · 101 阅读 · 0 评论 -
Java NIO(七)Pipe
Java NIO 管道是2个线程之间的单向数据连接。Pipe有一个source通道和一个sink通道。数据会被写到sink通道,从source通道读取。这里是Pipe原理的图示:创建管道通过Pipe.open()方法打开管道。Pipe pipe = Pipe.open();向管道写数据要向管道写数据,需要访问sink通道。Pipe.SinkChannel sinkChannel = pipe.sink();通过调用SinkChannel的write()方法,将数据转载 2020-06-24 08:31:57 · 81 阅读 · 0 评论 -
Java NIO(六)SocketChannel、ServerSocketChannel
SocketChannelJava NIO中的SocketChannel是一个连接到TCP网络套接字的通道。可以通过以下2种方式创建SocketChannel:打开一个SocketChannel并连接到互联网上的某台服务器。 一个新连接到达ServerSocketChannel时,会创建一个SocketChannel。打开 SocketChannelSocketChannel socketChannel = SocketChannel.open();socketChannel.conne转载 2020-06-24 08:31:11 · 108 阅读 · 0 评论 -
Java NIO(五) Selector
Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件。这样,一个单独的线程可以管理多个channel,从而管理多个网络连接。下面是本文所涉及到的主题列表:为什么使用Selector? Selector的创建 向Selector注册通道 SelectionKey 通过Selector选择通道 wakeUp() close() 完整的示例为什么使用Selector?仅用单个线程来处理多个Channels的好处是,只需转载 2020-06-24 08:29:58 · 91 阅读 · 0 评论 -
Java NIO(四) FileChannel
通道之间的数据传输在Java NIO中,如果两个通道中有一个是FileChannel,那你可以直接将数据从一个channel(译者注:channel中文常译作通道)传输到另外一个channel。transferFrom()FileChannel的transferFrom()方法可以将数据从源通道传输到FileChannel中(译者注:这个方法在JDK文档中的解释为将字节从给定的可读取字节通道传输到此通道的文件中)。RandomAccessFile fromFile = new Random转载 2020-06-24 08:28:16 · 131 阅读 · 0 评论 -
Java NIO(三) Buffer
Java NIO中的Buffer用于和NIO通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。下面是NIO Buffer相关的话题列表:Buffer的基本用法 Buffer的capacity,position和limit Buffer的类型 Buffer的分配 向Buffer中写数据 flip()方法 从Buffer中读转载 2020-06-24 08:27:00 · 63 阅读 · 0 评论 -
Java NIO(一)概述
Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始),Java NIO提供了与标准IO不同的IO工作方式。Java NIO: Channels and Buffers(通道和缓冲区)标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。Java NIO: Non-blocking IO(非阻塞IO)Java NIO可以让你原创 2020-06-22 16:10:29 · 139 阅读 · 1 评论