Java IO与NIO

1、Java的IO流
a) IO流的分类
这里写图片描述

b)节点流、处理流
I)节点流:可以从或向一个特定的地方(节点)读写数据,程序直连接到实际的数据源,和实际的输入/输出节点连接。
这里写图片描述
II)处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。处理流的构造方法总是要带一个其他的流对象做参数。
这里写图片描述

c) IO流的体系
这里写图片描述

d)阻塞I/O的通信模型示意图如下:
这里写图片描述

阻塞I/O通信模型的缺点:
I) 输入输出流为阻塞式,如read()方法, 阻塞可能带来频繁的上下文切换,且大部分上下文切换可能是无意义的。
II) 底层依赖于字节处理,效率不高。
III) 当客户端多时,会创建大量的处理线程。且每个线程都要占用栈空间和一些CPU时间。
2 NIO
a) NIO基本概念
NIO采用内存映射文件的方式来处理输入输出,将文件后文件的一段区域映射到内存中,这样就可以像访问内存一样访问文件了。
这里写图片描述
b) Web应用中NIO的机制
I) 由一个专门的线程来处理所有的 IO 事件,并负责分发。
II)事件驱动机制:事件到的时候触发,而不是同步的去监视事件。
III)线程通讯:线程之间通过 wait,notify 等方式通讯。保证每次上下文切换都是有意义的。减少无谓的线程切换。
这里写图片描述
这里写图片描述

参考:http://weixiaolu.iteye.com/blog/1479656

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值