NIO 初级
九月木码
这个作者很懒,什么都没留下…
展开
-
01. Java NIO 教程
原文链接:http://tutorials.jenkov.com/java-nio/index.html Java NIO是java 1.4之后新出的一套IO接口,这里的的新是相对于原有标准的Java IO和Java Networking接口。NIO提供了一种完全不同的操作方式。 NIO中的N可以理解为Non-blocking,不单纯是New Java NIO...翻译 2018-09-05 21:32:53 · 93 阅读 · 0 评论 -
14. Java NIO vs. IO
Java NIO和IO的主要区别下表总结了Java NIO和IO之间的主要差别,我会更详细地描述表中每部分的差异。IO NIO面向流 面向缓冲阻塞IO 非阻塞IO无 选择器面向流与面向缓冲Java NIO和IO之间第一个最大的区别是,IO是面向流的,NIO是面向缓冲区的。...翻译 2018-09-06 17:00:48 · 115 阅读 · 0 评论 -
13.Java NIO Pipe管道
原文链接:http://tutorials.jenkov.com/java-nio/pipe.html一个Java NIO的管道是两个线程间单向传输数据的连接。一个管道(Pipe)有一个source channel和一个sink channel(没想到合适的中文名)。我们把数据写到sink channel中,这些数据可以通过source channel再读取出来。下面是一个管道的示意图:...翻译 2018-09-06 16:29:13 · 124 阅读 · 0 评论 -
12. Java NIO DatagramChannel数据报通道
Java NIO中的DatagramChannel是一个能收发UDP包的通道。因为UDP是无连接的网络协议,所以不能像其它通道那样读取和写入。它发送和接收的是数据包。打开 DatagramChannel下面是 DatagramChannel 的打开方式:DatagramChannel channel = DatagramChannel.open();channel.socket()...翻译 2018-09-06 16:12:27 · 103 阅读 · 0 评论 -
10. Java NIO ServerSocketChannel服务端套接字通道
Java NIO中的 ServerSocketChannel 是一个可以监听新进来的TCP连接的通道, 就像标准IO中的ServerSocket一样。ServerSocketChannel类在 java.nio.channels包中。ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();serverSock...翻译 2018-09-06 15:31:28 · 145 阅读 · 0 评论 -
11. Java NIO: Non-blocking Server非阻塞服务器
原文链接:http://tutorials.jenkov.com/java-nio/non-blocking-server.html现在我们已经知道了Java NIO里面那些非阻塞特性是怎么工作的,但是要设计一个非阻塞的服务仍旧比较困难。非阻塞IO相对传统的阻塞IO给开发者带来了更多的挑战。在本节非阻塞服务的讲解中,我们一起来讨论这些会面临的主要挑战,同时也会给出一些潜在的解决方案。非阻塞...翻译 2018-09-06 15:23:21 · 132 阅读 · 0 评论 -
09. Java NIO SocketChannel套接字通道
Java NIO中的SocketChannel是一个连接到TCP网络套接字的通道。可以通过以下2种方式创建SocketChannel:打开一个SocketChannel并连接到互联网上的某台服务器。 2.一个新连接到达ServerSocketChannel时,会创建一个SocketChannel打开 SocketChannel下面是SocketChannel的打开方式:...翻译 2018-09-06 11:32:08 · 134 阅读 · 0 评论 -
08. Java NIO FileChannel文件通道
原文链接:http://tutorials.jenkov.com/java-nio/file-channel.htmlJava NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要通过使用...翻译 2018-09-06 11:16:43 · 142 阅读 · 0 评论 -
07. Java NIO Selector选择器
原文链接:http://tutorials.jenkov.com/java-nio/selectors.htmlSelector是Java NIO中的一个组件,用于检查一个或多个NIO Channel的状态是否处于可读、可写。如此可以实现单线程管理多个channels,也就是可以管理多个网络链接。为什么使用Selector(Why Use a Selector?)用单线程处理多个cha...翻译 2018-09-06 10:50:06 · 203 阅读 · 0 评论 -
06. Java NIO Channel to Channel Transfers通道传输接口
原文链接:http://tutorials.jenkov.com/java-nio/channel-to-channel-transfers.html 在Java NIO中如果一个channel是FileChannel类型的,那么他可以直接把数据传输到另一个channel。这个特性得益于FileChannel包含的transferTo和transferFrom两个方法。transfe...翻译 2018-09-06 09:58:56 · 126 阅读 · 0 评论 -
05. Java NIO Scatter / Gather
原文链接:http://tutorials.jenkov.com/java-nio/scatter-gather.htmlJava NIO发布时内置了对scatter / gather的支持。scatter / gather是通过通道读写数据的两个概念。Scattering read指的是从通道读取的操作能把数据写入多个buffer,也就是sctters代表了数据从一个channel到多个...翻译 2018-09-06 09:42:02 · 108 阅读 · 0 评论 -
04. Java NIO Buffer缓冲区
原文链接:http://tutorials.jenkov.com/java-nio/buffers.htmlJava NIO Buffers用于和NIO Channel交互。正如你已经知道的,我们从channel中读取数据到buffers里,从buffer把数据写入到channels.buffer本质上就是一块内存区,可以用来写入数据,并在稍后读取出来。这块内存被NIO Buffer包裹起...翻译 2018-09-05 23:38:36 · 98 阅读 · 0 评论 -
02. Java NIO 概览
原文链接:http://tutorials.jenkov.com/java-nio/overview.htmlNIO包含下面几个核心的组件:Channels Buffers Selectors 整个NIO体系包含的类远远不止这几个,但是在笔者看来Channel,Buffer和Selector组成了这个核心的API。其他的一些组件,比如Pipe和FileLock仅仅只作为上述三...翻译 2018-09-05 21:42:10 · 72 阅读 · 0 评论 -
03. Java NIO Channel通道
原文链接:http://tutorials.jenkov.com/java-nio/channels.htmlJava NIO Channel通道和流非常相似,主要有以下几点区别:通道可以读也可以写,流一般来说是单向的(只能读或者写)。 通道可以异步读写。 通道总是基于缓冲区Buffer来读写。正如上面提到的,我们可以从通道中读取数据,写入到buffer;也可以中buffer内读数据...翻译 2018-09-05 21:55:09 · 135 阅读 · 0 评论