NIO
文章平均质量分 82
idiandi
这个作者很懒,什么都没留下…
展开
-
Java NIO (一)--简介
一、简介Java NIO (New IO)是JDK1.4后引入的新输入/输出API,提供基于缓冲区(buffer)的块写入/读取,而以前的I/O是基于流(Stream)的方式,NIO基于块的IO操作,将最耗时的缓存区读取和填充交由底层操作系统实现,因此速度上要快得多;主要由以下三个核心部分组成: 1.Channel2. Buffer 3. Selector二、Channel原创 2017-03-07 11:06:46 · 5184 阅读 · 0 评论 -
Java NIO (二)--Buffer
Buffer的基本用法 使用Buffer读写数据一般遵循以下四个步骤: 写入数据到Buffer调用flip()方法从Buffer中读取数据调用clear()方法或者compact()方法当向buffer写入数据时,Buffer会记录下写了多少数据。一旦要读取数据,需要通过flip()方法将Buffer从写模式切换到读模式。在读模式下,可以读取之前写入到Buffer的所有数据。原创 2017-03-07 11:39:45 · 708 阅读 · 0 评论 -
Java NIO (三)-分散(Scatter)/聚集(Gather)
分散和聚集 I/O 是使用多个(数组)而不是单个缓冲区进行数据读/写; 分散(Scatter)从通道中读取数据时写入多个缓冲区中,通道将数据“分散”到多个缓冲区中; 聚集(Gather)写入通道时将多个缓冲区的数据写入同一个通道,通道将多个缓冲区数据“聚集”到一起;scatter / gather经常用于需要将传输的数据分开处理的场合,例如传输一个由消息头和消息体组成的消息原创 2017-03-07 11:50:49 · 1031 阅读 · 0 评论 -
Java NIO(四)--FileChannel
一、概述NIO 中FileChannel可以理解为一个连接到文件的通道,可以通过FileChannel对文件进行读写; FileChannel没有非阻塞模式,读写都只有阻塞的方式;二、操作打开FileChannel 在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要通过使用一个InputStream、OutputS原创 2017-03-07 13:16:38 · 561 阅读 · 0 评论 -
Java NIO(五)--Selector
一、概述selector,选择器,同过一个选择器,程序可以通过一个线程处理多个channel,仅用单个线程来处理多个Channels的好处是,只需要更少的线程来处理通道。事实上,可以只用一个线程处理所有的通道,这样会大量的减少线程之间上下文切换的开销。selector基于事件驱动的方式处理多个通道I/O。二、Selector、SelectableChannel和Select原创 2017-03-13 15:02:56 · 772 阅读 · 0 评论 -
Java NIO(六)--ServerSocketChannel与SocketChannel
一、SocketChanel1、创建SocketChannel有两种方法可以获取一个SocketChannel实例 1. 通过静态方法open打开一个SocketChannel socketChannel = SocketChannel.open();ServerSocketChannel接受一个连接请求后等到SocketChannel socketChannel = se原创 2017-03-13 15:26:50 · 2014 阅读 · 0 评论