
java--NIO
文章平均质量分 59
yjc0403
这个作者很懒,什么都没留下…
展开
-
java NIO 之 NIO与IO
java NIO 之 NIO与IO Java NIO和IO的主要区别 IO NIO面向流 面向缓冲阻塞IO 非阻塞IO无 Selector 面向流与面向缓冲 面向流:例如文件和程序之间有一个通道,像水流一样流动,分输入流和输出流...原创 2017-02-20 17:44:33 · 120 阅读 · 0 评论 -
java NIO 之 Pipe
java NIO 之 Pipe Java NIO Pipe是2个线程之间的单向数据连接。Pipe有一个source通道和一个sink通道。数据会被写到sink通道,从source通道读取。 Pipe原理的图示: Pipe的特点 Pipe 提供一种机制,可以按照写入的顺序读取数据。 Pipe.SinkChanne...原创 2017-03-03 16:35:53 · 125 阅读 · 0 评论 -
java NIO 之 DatagramChannel
java NIO 之 DatagramChannel Java NIO中的DatagramChannel是一个能收发UDP包的通道。因为UDP是无连接的网络协议,所以不能像其它通道那样读取和写入。它发送和接收的是数据包。 打开 DatagramChannel DatagramChannel channel = DatagramChannel.ope...原创 2017-03-02 17:39:29 · 116 阅读 · 0 评论 -
java NIO 之 ServerSocketChannel
java NIO 之 ServerSocketChannel Java NIO中的 ServerSocketChannel 是一个可以监听新进来的TCP连接的通道, 就像标准IO中的ServerSocket一样。ServerSocketChannel类在 java.nio.channels包中。 代码例子:ServerSocketChannel serverSocke...原创 2017-03-02 12:05:18 · 167 阅读 · 0 评论 -
java NIO 之 SocketChannel
java NIO 之 SocketChannel Java NIO中的SocketChannel是一个连接到TCP网络套接字的通道。可以通过以下2种方式创建SocketChannel: 打开一个SocketChannel并连接到互联网上的某台服务器。一个新连接到达ServerSocketChannel时,会创建一个SocketChannel。 打开 ...原创 2017-03-01 18:03:07 · 105 阅读 · 0 评论 -
java NIO 之 FileChannel
java NIO 之 FileChannel Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。 FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。 打开FileChannel 在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要通过使...原创 2017-03-01 15:28:01 · 104 阅读 · 0 评论 -
java NIO 之 Selector
java NIO 之 Selector Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件。这样,一个单独的线程可以管理多个channel,从而管理多个网络连接。 为什么使用Selector? 仅用单个线程来处理多个Channels的好处是,只需要更少的线程来处理通道。事...原创 2017-03-01 14:39:21 · 99 阅读 · 0 评论 -
java NIO 之 通道之间的数据传输
java NIO 之 通道之间的数据传输 在Java NIO中,如果两个通道中有一个是FileChannel,那你可以直接将数据从一个channel(通道)传输到另外一个channel。 transferFrom() FileChannel的transferFrom()方法可以将数据从源通道传输到FileChannel中。 代码如下: ...原创 2017-02-24 18:07:55 · 164 阅读 · 0 评论 -
java NIO 之 Scatter/Gather
java NIO 之 Scatter/Gather Java NIO开始支持scatter/gather,scatter/gather用于描述从Channel(通道)中读取或者写入到Channel的操作。 分散(scatter)从Channel中读取是指在读操作时将读取的数据写入多个buffer中。因此,Channel将从Channel中读取的数据“分散(scat...原创 2017-02-24 17:14:11 · 134 阅读 · 0 评论 -
java NIO 之 Buffer
java NIO 之 Buffer Java NIO中的Buffer用于和NIO通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。 Buffer的基本用法 Buffer读写数据的步骤:...原创 2017-02-24 16:16:31 · 77 阅读 · 0 评论 -
java NIO 之 Channel
java NIO 之 Channel java NIO和流类似,但还是有所区别 既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的通道可以异步地读写通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入从通道读取数据到缓冲区,从缓冲区写入数据到通道。如下图所示: Channel的实现 FileC...原创 2017-02-23 17:14:19 · 270 阅读 · 0 评论 -
java NIO 之 基础
java NIO 之 基础 Java NIO 由以下几个核心部分组成: ChannelsBuffersSelectors 虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Selector 构成了核心的API。其它组件,如Pipe和FileLock,只不过是与三个核心组件共同使用的工具类。 ...原创 2017-02-22 10:58:19 · 105 阅读 · 0 评论 -
java NIO 之适用场景
java NIO 之适用场景 NIO适用场景 服务器需要支持超大量的长时间连接。比如10000个连接以上,并且每个客户端并不会频繁地发送太多数据。例如总公司的一个中心服务器需要收集全国便利店各个收银机的交易信息,只需要少量线程按需处理维护的大量长期连接。 Jetty、Mina、Netty、ZooKeeper等都是基于NIO方式实现。 ...原创 2018-03-11 22:30:32 · 741 阅读 · 0 评论