[关闭]
@yulongsun 2016-11-18T08:23:29.000000Z 字数 772 阅读 855

01Java_NIO_IO

02java


一、NIO

http://www.toutiao.com/a6353093494467510530/

大纲

一.
二.几个必须明白的概念

1.阻塞和非阻塞
    相对于数据而言
    - 阻塞:数据没有准备好,程序就一直等着,知道程序执行好之后才往下执行
    - 非阻塞:不管数据有没有准备好,程序都往下执行


2.同步和异步
    相对于我们的IO事件而言
    - 同步:处理IO的时候,程序不能去干别的事情,等IO事件处理完才能干别的事
    - 异步:不关心IO处理的过程,在处理IO的时候可以去做别的事情,然后等待IO事件处理完成的通知。


3.阻塞不等于同步

三.Java现有的IO模型

1. BIO   JDK1.4以前的IO模型,阻塞IO
    accept
2. NIO   JDK1.4以后新增的IO模型,借鉴了Linux的多路复用技术和轮询技术。
3. AIO   JDK1.7以后的才有的IO模型,真正的异步处理,把IO读写操作完全交给OS,借鉴了Linux的expoll 模式。

四.Java NIO原理的解读

1. 多路复用(Channel通道) 相当于高速公路
2. 轮询机制

五.Java AIO的简介

六.编写代码并演示

七.总结


二、okio分析

1.okio的高效主要体现在三个方面:

- 对数据进行了**分块处理**,这样在大数据IO的时候可以以**块**为单位,这可以提高IO的吞吐率。
- 对数据块使用了**链表**进行管理,这可以仅通过移动“指针”就进行数据的管理,而不用真正去处理数据,而且对扩容来说也十分方便。
- 对闲置的块进行管理,通过一个块池(SegmentPool)的管理,避免系统GC和申请byte时的zero-fill。

2.okio的几个基础的类和接口

- 类Segment
- 类SegmentPool
- 接口Sink
- 接口Source
- 类Buffer
- 类ByteString
- 类AsyncTimeOut
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注