阻塞与非阻塞,同步与异步

Java的IO有三种:IO、NIO、AIO

第一种是Java刚开始就出现的IO即BIO(同步阻塞IO),我们一般常说的IO就是这种IO,这种IO相对来说比较简单,基于流模型,提供一种IO操作。交互方式是同步、阻塞,调用的顺序是线性顺序,这种IO有一个好处就是,代码简单,但是缺点就是IO的效率较低、扩展性不好。

在Java1.4后,出现了NIO(同步非阻塞IO),提供了Channel、Buffer、Selector等新的抽象。可以构建多路复用的同步非阻塞IO。

在Java1.7后,出现了NIO2即AIO,引入了异步非阻塞的IO,基于事件和回调机制。

同步与非同步的区别:

同步是一种可靠的有序运行机制,当我们在进行同步操作的时候,后续的任务等待当前任务的返回,才能进行下一步。而异步则不同,其他的任务不用等待当前任务的返回,依靠事件与回调机制来实现任务的次序关系。

阻塞与非阻塞的区别:

当线程处于阻塞状态时,无法从事其他任务,只有当条件准备就绪才可以。而非阻塞状态不管IO是否结束,直接返回。

猜你喜欢

转载自blog.csdn.net/OrangeRawNorthland/article/details/84262666