- 1、本文档共50页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
I/O 流或者输入 /输出流指的是计算机与外部世界或者一个程序与计算机的其余部分的之间
的接口。
1 传统 IO
以网络应用为例,传统方式需要监听一个 ServerSocket ,接受请求的连接为其提供服务(服
务通常包括了处理请求并发送响应) 图一是服务器的生命周期图, 其中标有粗黑线条的部分
表明会发生 I/O 阻塞。
图一
1.1 创建服务器的每个具体步骤
(1) 首先创建 ServerSocket
ServerSocket server=new ServerSocket (10000 );
(2 )然后接受新的连接请求
Socket newConnection=server.accept ();
对于 accept 方法的调用将造成阻塞, 直到 ServerSocket 接受到一个连接请求为止。 一旦
连接请求被接受,服务器可以读客户 socket 中的请求。
InputStream in = newConnection.getInputStream();
InputStreamReader reader = new InputStreamReader(in);
BufferedReader buffer = new BufferedReader(reader);
Request request = new Request();
while(!request.isComplete()) {
String line = buffer.readLine();
request.addLine(line);
}
1.2 这样的操作有两个问题
(1) 首先 BufferedReader 类的 readLine ()方法在其缓冲区未满时会造成线程阻塞,只
有一定数据填满了缓冲区或者客户关闭了套接字,方法才会返回。
(2 ) 其次,它会产生大量的垃圾, BufferedReader 创建了缓冲区来从客户套接字读入数
据,但是同样创建了一些字符串存储这些数据。虽然 BufferedReader 内部提供了
StringBuffer 处理这一问题,但是所有的 String 很快变成了垃圾需要回收。同样的问
题在发送响应代码中也存在。
Response response = request.generateResponse();
OutputStream out = newConnection.getOutputStream();
InputStream in = response.getInputStream() ;
int ch ;
while(-1 != (ch = in.read())) {
out.write(ch);
}
newConnection.close();
类似的,读写操作被阻塞而且向流中一次写入一个字符会造成效率低下,所以应该
使用缓冲区,但是一旦使用缓冲,流又会产生更多的垃圾。
1.3 传统的解决方法
通常在 Java 中处理阻塞 I/O 要用到线程(大量的线程)。一般是实现一个线程池用来处理
请求,如图二
图二
线程使得服务器可以处理多个连接, 但是它们也同样引发了许多问题。 每个线程拥有自己的
栈空间并且占用一些 CPU 时间,耗费很大,而且很多时间是浪费在阻塞的 I/O 操作上,没
有有效的利用 CPU。
2 新 I/O
新的输入 / 输出 (NIO) 库是在 JDK 1.4
您可能关注的文档
最近下载
- 灯盏生脉胶囊配合康复训练对脑梗死患者肢体功能影响的临床观察.pdf VIP
- (高清版)-B-T 19973.1-2023 医疗保健产品灭菌 微生物学方法 第1部分:产品上微生物总数的确定.pdf VIP
- 西门子PLC与配方功能.pptx VIP
- 高中毕业生登记表(完整A4版).pdf VIP
- XX年春运驾驶员安全培训试题(有答案) .pdf VIP
- 2023年同等学力申硕全国统考计算机科学与技术真题与答案.pdf VIP
- 供应商管理:供应商行为准则的内容.doc VIP
- 机械设备行业矿山机械深度报告:千亿美元高端赛道,中国龙头迈向全球.docx
- 《黑水》完整中英文对照剧本.doc
- TOSHIBA东芝复合机e-STUDI02006产品说明书.pdf
文档评论(0)