什么是NIO?同步非阻塞

NIO(Non-Blocking IO)

nio中文来说就是同步非阻塞的方式来处理IO数据,单独这样解释对于不了解的人来说是建立不起来概念的。所以就需要有对比的来看。

首先,同步阻塞。当执行者要执行由A-B-C三件事情组成的DEMO,当A执行完之后调用B,B执行完成之后在调用C,最终此事件完成。这种A执行完之后调用下一件事的动作就是同步。而执行者等待这个DEMO的完成的动作则是阻塞。

而什么是同步非阻塞呢?总事物还是按照原计划执行,但是执行者会在DEMO完成期间去做别的事件,但是它会监听此DEMO是否执行完成。如果完成,又会切换回来完成之后的事件。切换的动作就是非阻塞了。

说完前两个,肯定要说说异步非阻塞了。异步与同步的区别在于,同步切换的动作是当执行者监听到DEMO完成,再切换。而异步则是当DEMO完成之后会发出完成的广播,通知执行者,然后执行者按照自己的计划去切换。

它们在日常中分别叫做

  • BIO - BlockingIO 同步阻塞

  • NIO - Non-Blocking IO 同步非阻塞

  • AIO - Asynchronous IO 异步非阻塞
    NIO最基础的使用模型为多路复用模型。
    效果图
    将三个IO操作都注册到Selector中去,当有IO操作发生,给Selector发送消息。当选择器接收到请求,就会根据相应逻辑分配线程去处理。

猜你喜欢

转载自blog.csdn.net/qq_42673041/article/details/114240463