摘要: 缓冲区分配和包装在能够读和写之前,必须有一个缓冲区,用静态方法 allocate() 来分配缓冲区:ByteBuffer buffer = ByteBuffer.allocate(1024);allocate() 方法分配一个具有指定大小的底层数组,并将它包装到一个缓冲区对象中 — 在本例中是一个 ... 阅读全文
posted @ 2014-08-27 17:49 marco_tan 阅读(2807) 评论(0) 推荐(0) 编辑
摘要: *对于nio的非阻塞I/O操作,使用Selector获取哪些I/O准备就绪,注册的SelectionKey集合记录关联的Channel这些信息.SelectionKey记录Channel对buffer的操作方式.---SelectableChannel,Selector,SelectionKey是n... 阅读全文
posted @ 2014-08-27 16:13 marco_tan 阅读(335) 评论(0) 推荐(0) 编辑
摘要: Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件。这样,一个单独的线程可以管理多个channel,从而管理多个网络连接。下面是本文所涉及到的主题列表:为什么使用Selector?Selector的创建向Selector注册通道S... 阅读全文
posted @ 2014-08-27 16:12 marco_tan 阅读(632) 评论(0) 推荐(0) 编辑
摘要: Selector selector = Selector.open();普通的IO流的读取,写入都是一个字节一个字节或一个字符一个字符的循环进行,在这个过程中,程序是阻塞的,inputStream虽然既可以一个字节一个字节的读inputSream.read(),也可以批量读.inputStream.... 阅读全文
posted @ 2014-08-27 15:33 marco_tan 阅读(392) 评论(0) 推荐(0) 编辑
摘要: 转自:http://blog.csdn.net/haoel/article/details/2224069五、迷惑不解:为什么要自己消耗资源?令人不解的是为什么我们的Java的New I/O要设计成这个样子?如果说老的I/O不能多路复用,如下图所示,要开N多的线程去挨个侦听每一个Channel (文... 阅读全文
posted @ 2014-08-27 15:16 marco_tan 阅读(636) 评论(0) 推荐(0) 编辑
摘要: 转自:http://blog.csdn.net/haoel/article/details/2224055一、前言自从J2SE 1.4版本以来,JDK发布了全新的I/O类库,简称NIO,其不但引入了全新的高效的I/O机制,同时,也引入了多路复用的异步模式。NIO的包中主要包含了这样几种抽象数据类型:... 阅读全文
posted @ 2014-08-27 15:14 marco_tan 阅读(553) 评论(0) 推荐(0) 编辑
摘要: nio是new io的简称,从jdk1.4就被引入了。现在的jdk已经到了1.6了,可以说不是什么新东西了。但其中的一些思想值得我来研究。这两天,我研究了下其中的套接字部分,有一些心得,在此分享。首先先分析下:为什么要nio套接字?nio的主要作用就是用来解决速度差异的。举个例子:计算机处理的速度,... 阅读全文
posted @ 2014-08-27 12:58 marco_tan 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 本文并非Java.io或Java.nio的使用手册,也不是如何使用Java.io与Java.nio的技术文档。这里只是尝试比较这两个包,用最简单的方式突出它们的区别和各自的特性。Java.nio提出了新的流(stream)通讯概念并且加入了新的缓冲、文件流以及socket(套接字)特性。java.i... 阅读全文
posted @ 2014-08-27 12:36 marco_tan 阅读(444) 评论(0) 推荐(0) 编辑
摘要: 从上篇文章中知道BufferedInputStream是自带缓冲区的输入流,可以大大减少IO次数,提供效率。下面的例子中实现了用BufferedInputStream与FileInputStream实现20M文件的差异public class BufferedOutputStreamDemo { /... 阅读全文
posted @ 2014-08-27 10:04 marco_tan 阅读(739) 评论(0) 推荐(0) 编辑
摘要: BufferedInputStream是一个带有缓冲区域的InputStream,它的继承体系如下:InputStream|__FilterInputStream |__BufferedInputStream首先了解一下FilterInputStream:FilterInputStream通过装饰器... 阅读全文
posted @ 2014-08-27 09:53 marco_tan 阅读(1085) 评论(1) 推荐(0) 编辑