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
- java NIO-短笔记
- Java Nio学习笔记
- JAVA NIO 笔记
- JAVA-NIO-个人笔记
- java nio 笔记
- Java NIO学习笔记
- Java NIO笔记 Channel
- Java Nio 笔记
- java NIO 学习笔记
- JAVA NIO的笔记
- Java NIO学习笔记
- java nio学习笔记
- Java NIO学习笔记
- Java NIO笔记
- Java NIO学习笔记
- Java NIO学习笔记
- Java-NIO笔记
- Java NIO 笔记
- NE
- Unity3D自学笔记——脚本生命周期
- 常用js框架之vue.js(深入二:杂项)
- linux系统下修改文件夹目录权限FTP服务器搭建
- PHP开启opcache方法
- java NIO-短笔记
- 产品经理(PM)素质与技能初总结
- 究竟怎样写代码才算是好代码
- opengl环境在 vs2015和win10中的环境配置
- Ubuntu16.04安装配置JDK1.8
- Android简易闹钟实现
- 让你的Xcode8 支持 iOS7
- git 撤销操作
- android自定义popwindow,并且有从底部弹出的动画