阻塞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的区别的主要内容,如果未能解决你的问题,请参考以下文章