java-NIO
文章平均质量分 81
yu_liantao
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java NIO系列教程(1): Java NIO 概述
http://www.importnew.com/18763.htmlJava NIO 由以下几个核心部分组成:ChannelsBuffersSelectors虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Selector 构成了核心的API。其它组件,如Pipe和FileLock,只不过是与三个核心组件共同使用的工具类转载 2017-10-25 18:05:02 · 179 阅读 · 0 评论 -
Java NIO系列教程(10):Java NIO DatagramChannel
12DatagramChannel channel = Dat转载 2017-10-25 21:53:42 · 167 阅读 · 0 评论 -
Java NIO系列教程(11):Pipe
Java NIO 管道是2个线程之间的单向数据连接。Pipe有一个source通道和一个sink通道。数据会被写到sink通道,从source通道读取。这里是Pipe原理的图示:创建管道通过Pipe.open()方法打开管道。例如:1Pipe pipe = Pipe.open();转载 2017-10-25 21:55:33 · 216 阅读 · 0 评论 -
java内功系列二(IO && NIO && AIO )
1.java.io下包括输入和输出2中IO流,每种IO流又分为字节流和字符流两大类(按照是否直接与目的源交互又分为节点流和处理流,处理流其实是封装了节点流在更高层实现数据的处理,这样java程序可以使用一致的代码爱处理不同的节点流,不管来之文件还是网络还是键盘,详见下图)。java7提供了NIO更高效。java程序可以把对象序列化成字节流放在磁盘或者网上传送,这是分布式编程的基础。2.中文是1...原创 2018-08-27 10:07:02 · 228 阅读 · 0 评论 -
ServerSocketChannel与SocketChannel的使用案例
转载:https://blog.youkuaiyun.com/csh159/article/details/7999893TCPServer.javapackage com.xy.nio; import java.io.IOException;import java.net.InetSocketAddress;import java.nio.channels.SelectionKey;imp...转载 2018-08-23 10:08:04 · 1089 阅读 · 1 评论 -
Unix下五种IO模型
1. I/O模型 Unix下共有五种I/O模型 a. 阻塞I/O b. 非阻塞I/O c. I/O复用(select和poll) d. 信号驱动I/O(SIGIO) e. 异步I/O(Posix.1的aio_系列函数) 1). 阻塞I/O模型 应用程序调用一个IO函数,导致应用程序阻塞,等待数据准备好。 如果数据没有准备好,一直等待。。。。 数据准备好了,从内核拷贝到用户空间 I/O函数返回成...转载 2018-08-23 15:30:36 · 547 阅读 · 0 评论 -
透彻Linux(Unix)五种IO模型(转)
IO模型用一幅图表示所支持的I/O模型纵向维度是“阻塞(Blocking)”、“非阻塞(Non-blocking)”;横向维度是“同步”、“异步”。总结起来是四种模型同步阻塞、同步非阻塞;异步阻塞、异步非阻塞。《Unix网络编程》中划分出了“第五种”模型——“信号驱动式IO”其实属于异步阻塞类型,这种模型的通知方式有多种多样后面展开说明。同步/异步、阻塞/非阻塞从内核角度看I/...转载 2018-08-23 16:28:39 · 274 阅读 · 0 评论 -
理解AsynchronousChannelGroup
简单说来,在AIO中,操作系统为我们做了更多的事情。因为操作系统更底层,所以理论上来讲效率会更高些。AsynchronousChannelGroup可以理解为一个JVM中对于Socket相关操作的一些公共资源的代表。一个ChannelGroup和一个(或2个)thread pool关联。理解AsynchronousChannelGroup 首先引用PRO JAVA 7 NIO2书中...转载 2018-08-24 12:07:59 · 458 阅读 · 0 评论 -
AIO实现异步Socket通信
AIO需要操作系统的支持,在linux内核2.6版本中加入了对真正异步IO的支持,java从jdk1.7开始支持AIO核心类有AsynchronousSocketChannel 、AsynchronousServerSocketChannel、AsynchronousChannelGroup 前两个个类是javaAIO为TCP通信提供的异步Channel。看名字就知道应该是干什么的了。...转载 2018-08-24 14:42:15 · 1829 阅读 · 0 评论 -
聊聊Linux 五种IO模型
上一篇《聊聊同步、异步、阻塞与非阻塞》已经通俗的讲解了,要理解同步、异步、阻塞与非阻塞重要的两个概念点了,没有看过的,建议先看这篇博文理解这两个概念点。在认知上,建立统一的模型。这样,大家在继续看本篇时,才不会理解有偏差。那么,在正式开始讲Linux IO模型前,比如:同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。所以先限定一下...转载 2018-08-24 14:54:37 · 196 阅读 · 0 评论 -
Linux中的IO模型
IO模型 linux系统IO分为内核准备数据和将数据从内核拷贝到用户空间两个阶段。 这张图大致描述了数据从外部磁盘向运行中程序的内存中移动的过程。用户空间、内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟储存空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限...转载 2018-08-24 15:40:38 · 126 阅读 · 0 评论 -
java新一代网络编程模型AIO原理及Linux系统AIO介绍
前言http://www.52im.net/thread-306-1-1.html从JDK 7版本开始,Java新加入的文件和网络io特性称为nio2(new io 2, 因为jdk1.4中已经有过一个nio了),包含了众多性能和功能上的改进,其中最重要的部分,就是对异步io的支持,称为Java AIO(asynchronous IO)。因为AIO的实施需充分调用OS参与,IO需要操作系统支持...转载 2018-08-24 17:01:22 · 1230 阅读 · 1 评论 -
Java NIO系列教程(9):ServerSocketChannel
Java NIO中的 ServerSocketChannel 是一个可以监听新进来的TCP连接的通道, 就像标准IO中的ServerSocket一样。ServerSocketChannel类在 java.nio.channels包中。这里有个例子:12345678910转载 2017-10-25 21:53:06 · 161 阅读 · 0 评论 -
selector socketChannel
篇文章对NIO进行了简介,对Channel和Buffer接口的使用进行了说明,并举了一个简单的例子来说明其使用方法。本篇则重点说明selector,Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件。这样,一个单独的线程可以管理多个channel,从而管理多个网络连接。与selector联系紧密的是ServerS转载 2017-10-26 17:36:33 · 953 阅读 · 0 评论 -
Java NIO系列教程(2):Channel
Java NIO的通道类似流,但又有些不同:既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。通道可以异步地读写。通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。正如上面所说,从通道读取数据到缓冲区,从缓冲区写入数据到通道。如下图所示:Channel的实现这些是Java NIO中最重要的通道的实现:Fi转载 2017-10-25 21:12:24 · 180 阅读 · 0 评论 -
Java NIO系列教程(3) :Buffer
译文出处: airu 原文出处:Jakob JenkovJava NIO中的Buffer用于和NIO通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。下面是NIO Buffer相关的话题列表:B转载 2017-10-25 21:22:04 · 161 阅读 · 0 评论 -
Java NIO系列教程(4):Scatter/Gather
Java NIO开始支持scatter/gather,scatter/gather用于描述从Channel(译者注:Channel在中文经常翻译为通道)中读取或者写入到Channel的操作。分散(scatter)从Channel中读取是指在读操作时将读取的数据写入多个buffer中。因此,Channel将从Channel中读取的数据“分散(scatter)”到多个Buffer中。聚集(ga转载 2017-10-25 21:26:14 · 196 阅读 · 0 评论 -
Java NIO系列教程(5):通道之间的数据传输
在Java NIO中,如果两个通道中有一个是FileChannel,那你可以直接将数据从一个channel(译者注:channel中文常译作通道)传输到另外一个channel。transferFrom()FileChannel的transferFrom()方法可以将数据从源通道传输到FileChannel中(译者注:这个方法在JDK文档中的解释为将字节从给定的可读取字节通道传输到此转载 2017-10-25 21:28:18 · 165 阅读 · 0 评论 -
Java NIO系列教程(6):Selector
Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件。这样,一个单独的线程可以管理多个channel,从而管理多个网络连接。下面是本文所涉及到的主题列表:为什么使用Selector?Selector的创建向Selector注册通道SelectionKey通过Selector选择通道wakeUp()close()完整转载 2017-10-25 21:32:58 · 161 阅读 · 0 评论 -
Java NIO系列教程(7):FileChannel
Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。打开FileChannel在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要通过使用一个InputStream、OutputStream或RandomAccessF转载 2017-10-25 21:42:03 · 229 阅读 · 0 评论 -
Java NIO系列教程(8):SocketChannel
Java NIO中的SocketChannel是一个连接到TCP网络套接字的通道。可以通过以下2种方式创建SocketChannel:打开一个SocketChannel并连接到互联网上的某台服务器。一个新连接到达ServerSocketChannel时,会创建一个SocketChannel。打开 SocketChannel下面是SocketChannel的打开方式:转载 2017-10-25 21:49:09 · 179 阅读 · 0 评论 -
JAVA IO总结
1.File类:可以对文件和目录进行操作。2.文件过滤器:FilenameFileter,file.list(FilenameFileter arg)实现找文件通过接口过滤。3.java对基础流inputstream、outputstream、reader、writer进行包装后产生的流叫处理流或者包装流,封装了统一的底层流种类,使用缓冲方式提高出入输出效率。4.java还提供了在io原创 2017-10-26 10:03:31 · 224 阅读 · 0 评论 -
java aio 编程
https://colobu.com/2014/11/13/java-aio-introduction/Java NIO (JSR 51)定义了Java new I/O API,提案2000年提出,2002年正式发布。 JDK 1.4起包含了相应的API实现。JAVA NIO2 (JSR 203)定义了更多的 New I/O APIs, 提案2003提出,直到2011年才发布, 最终在JDK...转载 2018-08-24 17:11:06 · 977 阅读 · 0 评论
分享