为什么我觉得 nio 比 aio 更适合高并发

nio 是同步非阻塞的,aio 是异步非阻塞的,初看,肯定是异步的更好更高级啊,那为什么我觉得 nio 比 aio 更适合高并发呢?嗯,一定是哪儿出了问题。

这个要涉及到它们两个的具体实现和使用了。

首先,我们想象 bio 高并发的最主要限制条件是什么?阻塞。对,阻塞是对资源极大的浪费,但 nio 和 aio 两个都是非阻塞的,这个问题不是决定原因。

那么,第二限制条件呢?线程。对,就是线程,想想如果同时有一万个并发量,我们要建立一万个线程,唉,估计要把操作系统累死了,线程切换调度消耗极大。

那怎么解决呢?如果我们只用少量线程能不能实现呢?答案是可以的,我们利用 nio 同步非阻塞的特性,把各种请求当成一个个时间,然后用几个固定的线程去依次执行这行事件,形成一个或多个事件循环,这样我们可以同时处理高达上万的并发,当然,事件循环一个不能有阻塞调用,否则,一旦阻塞了事件循环,这个事件循环里的所有事件都执行不了了。netty 高并发的原理就是这样的。

而 aio 呢?aio 的回调是要开线程的,它只是解决了阻塞浪费资源的问题,并没有解决高并发时线程调度的开销。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值