摘要: 在上一篇文章中介绍了关于缓冲区的一些细节内容,现在终于可以进入NIO中最有意思的部分非阻塞I/O。通常在进行同步I/O操作时,如果读取数据,代码会阻塞直至有 可供读取的数据。同样,写入调用将会阻塞直至数据能够写入。传统的Server/Client模式会基于TPR(Thread per Request... 阅读全文
posted @ 2014-04-23 15:34 marco_tan 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 在上一篇文章中介绍了缓冲区内部对于状态变化的跟踪机制,而对于NIO中缓冲区来说,还有很多的内容值的学习,如缓冲区的分片与数据共享,只读缓冲区等。在本文中我们来看一下缓冲区一些更细节的内容。缓冲区的分配在前面的几个例子中,我们已经看过了,在创建一个缓冲区对象时,会调用静态方法allocate()来指定... 阅读全文
posted @ 2014-04-23 15:08 marco_tan 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 在第一篇中,我们介绍了NIO中的两个核心对象:缓冲区和通道,在谈到缓冲区时,我们说缓冲区对象本质上是一个数组,但它其实是一个特殊的数组,缓冲区对象内置了一些机制,能够跟踪和记录缓冲区的状态变化情况,如果我们使用get()方法从缓冲区获取数据或者使用put()方法把数据写入缓冲区,都会引起缓冲区状态的... 阅读全文
posted @ 2014-04-23 14:54 marco_tan 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 在Java1.4之前的I/O系统中,提供的都是面向流的I/O系统,系统一次一个字节地处理数据,一个输入流产生一个字节的数据,一个输出流消费一个字节的数据,面向流的I/O速度非常慢,而在Java 1.4中推出了NIO,这是一个面向块的I/O系统,系统以块的方式处理处理,每一个操作在一步中产生或者消费一... 阅读全文
posted @ 2014-04-23 14:35 marco_tan 阅读(192) 评论(0) 推荐(0) 编辑
摘要: Buffer是一个包装了基本数据元素数组的对象,它以及它的子类定义了一系列API用于处理数据缓存。一、属性Buffer有四个基本属性:1、capacity 容量,buffer能够容纳的最大元素数目,在Buffer创建时设定并不能更改2、limit buffer中有效位置数目3、position 下一... 阅读全文
posted @ 2014-04-23 13:51 marco_tan 阅读(189) 评论(0) 推荐(0) 编辑