Java中NIO、BIO和AIO介绍

原文链接:mp.weixin.qq.com

BIO、NIO、AIO的基本定义和类比描述:

  • BIO(Blocking I/O): 同步阻塞I/O模式,数据的读取写入必须阻塞在一个线程内等待其完成。这里使用那个经典的烧开水例子,这里假设一个烧开水的场景,有一排水壶在烧开水,BIO的工作模式就是,叫一个线程停留在一个水壶那,直到这个水壶烧开,采取处理下一个水壶。但是线程实际上在等待水壶烧开的时间段什么都没有做。

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

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

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×