java NIO-短笔记

来源:互联网 发布:linux离线下载软件 编辑:程序博客网 时间:2024/06/02 08:04

非阻塞IO(Nonblocking IO ,NIO)出现之前,Java通过传统的Socket来实现基本的网络通信功能。以服务端为例,其基本流程是:
- open:打开ServerSocket连接
- accept: 接受连接
- read:读取数据
- seldf: 发送数据
- close: 关闭连接

如果客户端还没有对服务端发起连接请求,那么accept就会阻塞。如果连接成功,当数据还没准备好,对read的调用同样会阻塞。当要处理多个连接时,就需要采用多线程的方式,由于每个线程都拥有自己的栈空间,而且由于阻塞会导致大量线程进行上下文切换,使得程序的运行效率非常低下,java4中引入了NIO。
NIO通过Selector,Channel,Buffer来实现非阻塞的IO操作。NIO非阻塞的实现主要采用了Reactor(反应器)设计模式,这个设计模式与Observer(观察者)类似,只不过Oberver设计模式只能处理一个事件源,而Reactor可以处理多个数据源。
Channel可以被看作一个双向非阻塞的通道,在通道的两边都可以进行数据的读写操作。Selector实现了用一个线程来管理多个通道,类似于一个观察者。

0 0
原创粉丝点击