0%

NIO、BIO、AIO

公司项目和物联网有关,使用mqtt做中间件,当设备数量到达一定程度的时候,经常会出现程序无法接收到
mqtt发送的信息,但是使用mqtt工具却没有出现该问题。

nio,bio,aio

nio同步非阻塞io,bio同步阻塞io,aio异步非阻塞io。他们之间有什么区别,如何去分辨。
同步和异步的区别是,同步是主动的,异步是被动的。主动和被动有啥区别,这个自己想(我也不知道)
阻塞和非阻塞的区别是,阻塞是等待资源才能进行下去,非阻塞是在等待资源的同时去干别的事情(玩手机)
   这里打一个比喻:在一个接口,现在是红灯,所有的车子都是停着的,也就是阻塞。在等待绿灯的时候
bio这个司机是一个新手司机,时时刻刻的盯着灯。bio是一个老司机,一边瞄一眼灯呢一边玩手机。aio
这个司机呢玩手机入迷了,绿灯亮了还在玩,还要等交警去提醒他绿灯了。
现在换一种说法:
    同步: 同步就是发起一个调用后,被调用者未处理完请求之前,调用不返回。
    异步: 异步就是发起一个调用后,立刻得到被调用者的回应表示已接收到请求,但是被调用者并没有返回
    结果,此时我们可以处理其他的请求,被调用者通常依靠事件,回调等机制来通知调用者其返回结果。
    阻塞: 阻塞就是发起一个请求,调用者一直等待请求结果返回,也就是当前线程会被挂起,无法从事其
    他任务,只有当条件就绪才能继续。
    非阻塞: 非阻塞就是发起一个请求,调用者不用一直等着结果返回,可以先去干其他事情。


    具体例子等我想起来了再写吧。。。