BIO、NIO、IO模型
文章平均质量分 84
刘嘉威
hello world
展开
-
Java NIO使用及原理分析 (一)
在Java1.4之前的I/O系统中,提供的都是面向流的I/O系统,系统一次一个字节地处理数据,一个输入流产生一个字节的数据,一个输出流消费一个字节的数据,面向流的I/O速度非常慢,而在Java 1.4中推出了NIO,这是一个面向块的I/O系统,系统以块的方式处理处理,每一个操作在一步中产生或者消费一个数据库,按块处理要比按字节处理数据快的多。在NIO中有几个核心对象需要掌握:缓冲区(Buf转载 2016-03-03 14:52:51 · 450 阅读 · 0 评论 -
Unix下的I/O模型
一、Unix下共有五种I/O模型1、阻塞I/O2、非阻塞I/O3、I/O复用(select和poll)4、信号驱动I/O(SIGIO)5、异步I/O(Posix.1的aio_系列函数)二、阻塞I/O模型应用程序调用一个IO函数,导致应用程序阻塞,等待数据准备好。如果数据没有准备好,一直等待。。。。数据准备好了,从内核拷贝到用户空,IO函数返回成功指示。原创 2016-03-03 14:45:19 · 756 阅读 · 0 评论 -
Java NIO使用及原理分析(二)
在第一篇中,我们介绍了NIO中的两个核心对象:缓冲区和通道,在谈到缓冲区时,我们说缓冲区对象本质上是一个数组,但它其实是一个特殊的数组,缓冲区对象内置了一些机制,能够跟踪和记录缓冲区的状态变化情况,如果我们使用get()方法从缓冲区获取数据或者使用put()方法把数据写入缓冲区,都会引起缓冲区状态的变化。本文为NIO使用及原理分析的第二篇,将会分析NIO中的Buffer对象。在缓冲区中,最转载 2016-03-03 14:58:43 · 412 阅读 · 0 评论 -
Java NIO使用及原理分析 (三)
通常在进行同步I/O操作时,如果读取数据,代码会阻塞直至有 可供读取的数据。同样,写入调用将会阻塞直至数据能够写入。传统的Server/Client模式会基于TPR(Thread per Request),服务器会为每个客户端请求建立一个线程,由该线程单独负责处理一个客户请求。这种模式带来的一个问题就是线程数量的剧增,大量的线程会增大服务器的开销。大多数的实现为了避免这个问题,都采用了线程池模型,转载 2016-03-03 15:04:48 · 518 阅读 · 0 评论