说一下NIO并简短的说一下和IO的区别?NIO,BIO,AIO

说一下NIO并简短的说一下和IO的区别?NIO,BIO,AIO

IO模型主要分类:

  1. 同步(synchronous) IO和异步(asynchronous) IO
  2. 阻塞(blocking) IO和非阻塞(non-blocking)IO
  3. 同步阻塞(blocking-IO)简称BIO
  4. 同步非阻塞(non-blocking-IO)简称NIO
  5. 异步非阻塞(synchronous-non-blocking-IO)简称AIO

1.BIO (同步阻塞I/O模式)

数据的读取写入必须阻塞在一个线程内等待其完成。

这里使用那个经典的烧开水例子,这里假设一个烧开水的场景,有一排水壶在烧开水,BIO的工作模式就是, 叫一个线程停留在一个水壶那,直到这个水壶烧开,才去处理下一个水壶。但是实际上线程在等待水壶烧开的时间段什么都没有做。

2.NIO(同步非阻塞)

同时支持阻塞与非阻塞模式,但这里我们以其同步非阻塞I/O模式来说明,那么什么叫做同步非阻塞?如果还拿烧开水来说,NIO的做法是叫一个线程不断的轮询每个水壶的状态,看看是否有水壶的状态发生了改变,从而进行下一步的操作。

3.AIO (异步非阻塞I/O模型)

异步非阻塞与同步非阻塞的区别在哪里?异步非阻塞无需一个线程去轮询所有IO操作的状态改变,在相应的状态改变后,系统会通知对应的线程来处理。对应到烧开水中就是,为每个水壶上面装了一个开关,水烧开之后,水壶会自动通知我水烧开了。

发布了124 篇原创文章 · 获赞 76 · 访问量 5630

猜你喜欢

转载自blog.csdn.net/weixin_45151795/article/details/105582637