nio整理
来源:互联网 发布:剑灵可爱萝莉捏脸数据 编辑:程序博客网 时间:2024/05/22 14:44
BIO即阻塞I/0,不管是磁盘I/O,还是网络I/O,数据在写入OutputStream或者从InputStream读取时都有可能会阻塞,一旦有阻塞,线程将会丢失去CPU的使用权,这在当前的大规模访问量和有性能要求的情况下是不能被接受的。
NIO有两个关键类:Channel和Selector,我们用城市交通工具来比喻NIO的工作方式。
这里Channel要比Socket更加具体,它可以比作某种具体的交通工具,而Selector可以比作一个车站的车辆运行调度系统,它将负责监控每辆车的当前运行状态,是已经出站,还是在路上等,也就是它可以轮询每个Channel的状态。这里还有一个Buffer类,它也比Stream更加具体,我们可以将它比作车上的座位。Channel是汽车的话Buffer就是汽车上的座位,它始终是一个具体的概念,与Stream不同,Stream只能代表一个座位,至于是什么座位由你自己去想象,也就是你在上车之前并不知道这个车上是否还有没有座位,也不知道上的是什么车,因为你并不能选择,而这些信息都已经被封装在了运输工具(Socket)里面。例如,当我们调用write()往SendQ中写数据时,当一次写的数据超过SendQ长度时需要按照SendQ的长度进行芬分割,这个过程中需要将用户空间数据和内核地址空间进行切换,而这个切换不是你可以控制的,但在Buffer中我们可以控制Buffer的容量,是否扩容以及如何扩容。
0 0
- nio整理
- nio整理
- NIO资料整理
- java nio整理
- Java Nio 整理
- JAVA-NIO 整理
- java nio整理
- NIO学习整理
- Java NIO知识整理
- java nio 使用异常整理
- Java-BIO/NIO/AIO整理
- Java NIO整理(转)
- Java NIO基础知识整理(一)
- 整理自《Pro Java 7 NIO.2》
- 关于IO与NIO的资料整理
- tomcat bio nio apr 模式 ---待自己整理
- nio
- NIO
- 简图记录-git的基本使用
- SQL 优化
- 分享8年开发经验,浅谈java程序员职业规划
- 将web项目发布到Tomcat 服务器上的三种方法
- 怎么样创建软链接和硬链接
- nio整理
- CENTOS 7.2 下 安装 MYSQL 5.6的一种方法
- 【前端新手之路第六天】表格与表单
- Wifi代替数据线调试
- Spring的IOC和DI
- iOS控制器-路由跳转
- JNI基础02
- 写一个宏将一个数的奇数位和偶数位交换
- TextView部分文字设置指定颜色和大小和字体