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