阻塞IO与非阻塞IO的区别

Posted Dontla

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阻塞IO与非阻塞IO的区别相关的知识,希望对你有一定的参考价值。

阻塞IO 常见的有我们的 tomcat , java多线程,阻塞IO 是指,线程如果没执行完,就不能释放资源,处理下一个请求(tomcat线程池中的线程资源,一个线程没执行完,不释放,就不能会线程池,tomca就不能分配它去执行下一个请求,即线程的指令没有被cpu取完,线程不能 去 重新 存 其他 指令)

阻塞IO又分为单线程模式阻塞,和多线程阻塞,tomcat默认是 多线程阻塞,即一个主线程去接收请求,但是不处理,去线程池开启一个新的线程去执行,这样可以提供并发量,虽然解决了主线程阻塞问题,但是 你新线程 还是存在阻塞问题的,

NIO 非阻塞IO:Netty , Redis
基于IO多路复用技术,只需要一个线程或者少量线程,就可以处理大量请求,从性能上来说NIO实现的服务器并发性一般大于BIO
不是说 单线程 就是 非阻塞 IO了,只有单线程 是 非阻塞IO设计的时候,单线程才可以处理并发问题,即 线程中的 指令 不需要指令全部被 cpu取完才能去,存新的指令

一般支持多线程的应用,都是默认采用 阻塞IO的
网络通信本来也是 IO,不要把 IO 就等于 文件读写,http本来就是 开启通道,以流的形式完成 数据的传输

参考文章:阻塞IO和非阻塞IO

《新程序员》:云原生和全面数字化实践 50位技术专家共同创作,文字、视频、音频交互阅读

以上是关于阻塞IO与非阻塞IO的区别的主要内容,如果未能解决你的问题,请参考以下文章

NIO之阻塞IO与非阻塞IO

IO模型

《linux设备驱动开发详解》笔记——8阻塞与非阻塞IO

同步与阻塞,异步与非阻塞的区别(转)

linux函数的阻塞与非阻塞IO及错误处理

Linux设备驱动基础03之阻塞与非阻塞IO