阻塞式: 当我们没有获取到数据的时候,整个应用会产生阻塞,放弃了CPU执行,无法去做其他事情。
非阻塞式:不管是否获取到数据,都立马必须告诉一个结果,如鬼没有获取到数据的情况下返回一个错误标记。根据错误的标记不断的进行轮训。
Bio就是一个阻塞式的
引入nio操作:java语言在jdk1.4版本推出一个 IO方案,就是对原来的BIO(阻塞式IO)实现了优化。
核心思想:面向缓冲区,基于通道实现非阻塞式IO,多路IO复用实现(选择器)
Bio与nio的区别
Bio是一个阻塞式的io.它是面向与流传输也就是跟据每个字节实现传输,效率非常低。而NIO是面向与缓冲区的非租塞式 IO,其中最大的亮点是IO多路复用机制。
IO多路复用原理:多路实际指的是多个不同的tcp连接,复用:一个线程可以维护多个不同的IO操作。好处:占用cpu资源非常小,保证线程安全问题。
我们来用代码实现下:
非租塞式代码演示: