我对于 JDK中 BIO/NIO/AIO 的理解

2 篇文章 0 订阅
BIO/NIO/AIO名字的具体含义:
BIO:Bloking IO (同步,阻塞IO)
NIO:Non-bloking IO (同步,非阻塞IO{由于是在nio包下,称为NIO1 jdk1.6+})
AIO:Asynchronous IO (异步,非阻塞IO。称为NIO2,jdk1.7+)
BIO/NIO/AIO区别
  • BIO:在代码中调用时当前线程会卡在调用的哪一行,直到需要获取写的数据操作完毕,才继续进行下一步操作。

  • NIO:调用相应非阻塞方法(如)socketChannel.configureBlocking(false);
    socketChannel.connect(Inet..);,在相关准备操作完毕之后立即返回,此时会给socketChannel 实例加上适当的状态。回到主线程中继续执行相关代码,但是需要对socketChannel 进行忙询问,如通过while循环一直判断该socketChannel是否已完成建立连接,在还没有建立连接时需要做什么。。。

  • AIO:调用相应非阻塞异步方法,JDK提某类操作完成调用的API(由我们来实现当特定操作完成之后,调用实现接口的方法),在进行相应操作时候自动创建相应线程来调用该实现。总的来说对于AIO,我们只负责在初次调用时,把一切都准备好,然后继续做其他与当前操作无关的事,后续与当前操作有关的由于都已经事先准备好,由JDK在事件发生时自动调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值