1 Java I/O:模型与流( 二 )


1 Java I/O:模型与流

文章插图
按用途,流又可以分为处理流与装饰流:
1 Java I/O:模型与流

文章插图
按操作方式分类:
1 Java I/O:模型与流

文章插图
按操作对象分类:
1 Java I/O:模型与流

文章插图
一般用虚线连接的类会搭配使用:
1 Java I/O:模型与流

文章插图

1 Java I/O:模型与流

文章插图
在高性能的I/O应用中,有几个名词经常出现:同步/异步、阻塞/非阻塞、同步阻塞/同步非阻塞、异步阻塞/异步非阻塞 。
同步/异步、阻塞/非阻塞,这两组概念其实说的是一个事情 。
同步:用户进程触发I/O操作并等待或者轮询的去查看I/O操作是否就绪,比如上厕所这件事,就必须自己亲自干,不能一边上厕所一边逛街;
异步:用户进程触发IO操作以后就可以响应其他的任务请求,而当I/O操作完成时会得到系统通知(异步的特点就是通知),比如把衣服丢到洗衣机里你就会去干别的事情了,衣服洗好了洗衣机会通知你取出来;
阻塞:和同步一样,在程序完成指定的任务之前,什么都不干,一直等待着,直到完成任务,比如上厕所没坑了,但附近又没有别的卫生间,只好在门口一直等着;
非阻塞:和异步一样,不会为了某个任务或事件一直等待而不响应其他请求,比如你可以一边上厕所一边玩手机 。
至于同步阻塞/同步非阻塞/异步阻塞/异步非阻塞,无非就是以上概念的变体而已 。
I/O是Java中比较裹人的概念之二,非常枯燥,没办法 。看看就行,理解不了那就多敲代码 。
【1 Java I/O:模型与流】

经验总结扩展阅读