异步同步 oio nio aio 总结

异步:多线程干多件事,叫异步

同步:单线程干多件事,叫同步

oio:单线程中,connect,canRead,read,canWrite,write 5种操作有可能阻塞当前线程叫oio。为啥会有这种模型呢?因为系统底层遇到以上5种事件并不通知你,你都需要自己去等。

nio:单线程中,connect,canRead,canWrite 不阻塞当前线程,read和write 阻塞当前线程 叫nio。为啥会有这种模型呢?自从系统底层支持了select网络模型,系统可以帮你发现connect/canRead/canWrite 你就不需要自己去等(阻塞)了,时不常去问一下就可以了。

aio:单线程中,connect,canRead,read,canWrite,write 都不阻塞当前线程 叫aio。这种牛逼,系统自动帮你处理了 connect,canRead,read,canWrite,write 五种事件,然后把读到的数据或写入的结果直接给你,你都不用关心是否可读可写。

同步oio:只能有效处理单个连接,几乎是不可用的模型。无法处理多个连接,因为如果第一个连接是不可读状态线程会阻塞,第二个连接根本进不来。

异步oio:可以处理多个连接,比较传统的模型。每个线程处理一个连接,线程内部连接的操作可以各种阻塞。缺点线程数随连接数增加而增加,上下文切换严重,不适合高连接低数据场景

同步nio:单线程中使用nio,可以处理多个连接,传说中的多路复用。java.nio 的基本模型。缺点是虽然connect,canRead,canWrite等事件未到达时不会阻塞线程,但是read和write会阻塞。只适合高连接低数据场景

异步nio:netty使用的方式,反应堆模式,可用性极高。使用两个线程池A/B,A异步处理connect canRead canWrite 等非阻塞事件,B异步处理write read 等阻塞事件。在高并发高数据量场景都可以使用。

异步aio:未知
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值