阻塞IO和非阻塞IO的区别
来源:互联网 发布:在手机怎么申请淘宝号 编辑:程序博客网 时间:2024/05/16 17:28
转载自:http://blog.sina.com.cn/s/blog_a46817ff0101g0gv.html
有很多人把阻塞认为是同步,把非阻塞认为是异步;个人认为这样是不准确的,当然从思想上可以这样类比,但方式是完全不同的,下面说说在JAVA里面阻塞IO和非阻塞IO的区别
在阻塞模式下,若从网络流中读取不到指定大小的数据量,阻塞IO就在那里阻塞着。比如,已知后面会有10个字节的数据发过来,但是我现在只收到8个字节,那么当前线程就在那傻傻地等到下一个字节的到来,对,就在那等着,啥事也不做,直到把这10个字节读取完,这才将阻塞放开通行。
在非阻塞模式下,若从网络流中读取不到指定大小的数据量,非阻塞IO就立即通行。比如,已知后面会有10个字节的数据发过来,但是我现在只收到8个字节,那么当前线程就读取这8个字节的数据,读完后就立即返回,等另外两个字节再来的时候再去读取。
从上面可以看出,阻塞IO在性能方面是很低下的,如果要使用阻塞IO完成一个Web服务器的话,那么对于每一个请求都必须启用一个线程进行处理。而使用非阻塞IO的话,一到两个线程基本上就够了,因为线程不会产生阻塞,好比一下接收A请求的数据,另一下接收B请求的数据,等等,就是不停地东奔西跑,直接到把数据接收完了。
虽然说,非阻塞IO比阻塞IO有更高的性能,但是对于开发来的,难度就成数倍递增了。由于是有多少数据就读取多少数据,这样在读取完整之前需要将已经读取到的数据保存起来,而且需要与其他地方来的数据隔离开来不能混在一起,否则就不知道这数据是谁的了,呵呵。
- 阻塞IO和非阻塞IO区别
- 阻塞IO、非阻塞IO的区别
- 阻塞IO和非阻塞IO的区别
- 阻塞IO和非阻塞IO的区别
- 阻塞IO和非阻塞IO的区别(转载)
- 阻塞和非阻塞io区别
- 阻塞和非阻塞IO
- 同步 IO和异步IO,阻塞 IO和非阻塞的区别
- 非阻塞IO 和阻塞IO
- 非阻塞IO 和阻塞IO
- 非阻塞IO 和阻塞IO:
- 非阻塞IO 和阻塞IO
- 非阻塞IO和阻塞IO
- 非阻塞IO 和阻塞IO
- 非阻塞IO和阻塞IO
- 非阻塞IO 和阻塞IO
- 非阻塞IO 和阻塞IO
- 阻塞、非阻塞IO
- How to call an Oracle Stored Procedure that returns one or more REF CURSORS, using ADO from C++ How
- 添加个性标签—三方开源TriangleLabelView
- H5生成字体图标方法
- 建立个人博客方法 Hexo + Github pages技术
- 高性能网络编程(1)----accept建立连接 (B)
- 阻塞IO和非阻塞IO的区别
- java内存分配分析
- POJ 2418 Hardwood Species
- 欢迎使用CSDN-markdown编辑器
- css(1)
- Windows操作系统名称及版本判断(二)
- altium designer PCB把板子翻过来看
- Git的日常使用
- MySql数据库导入导出.cvs文件命令