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

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是否结束,直接返回。

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-08 17:10
点赞 评论 收藏
分享
05-26 10:24
门头沟学院 Java
qq乃乃好喝到咩噗茶:其实是对的,线上面试容易被人当野怪刷了
找工作时遇到的神仙HR
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务