8. io

本文详细介绍了Java中的IO模型,从同步阻塞的BIO,到非阻塞的NIO,再到异步非阻塞的AIO。讨论了NIO中的缓冲区、选择器、多路复用器等核心概念,并对比了同步与异步、阻塞与非阻塞的区别。重点阐述了AIO如何实现线程结束后的主动通知,以及NIO在Netty、Dubbo、ZooKeeper等框架中的应用。
摘要由CSDN通过智能技术生成

io,读写,指的是内存,
读是内存从文件网络等读取数据
写是内存写数据到文件网络等

bio(同步阻塞io)

叫一个线程停留在一个水壶那,直到这个水壶烧开,才去处理下一个水壶
一个请求创建一个线程

nio(java的nio就是linux的多路复用io)Netty、Dubbo、ZooKeeper等都是基于NIO方式实现

  1. bio面向字节流,nio面向块(buffer)
  2. 直接内存(非堆内存),减少拷贝次数(原来是堆内存拷贝到非堆内存,在拷贝到缓冲区)
  3. 内核和磁盘io通过channel,不占用cpu资源(原来调用io资源需要cpu参与)
  4. 多路复用器selector(检查多个channel是否准备好),select,epoll

所有数据都通过Buffer对象处理,所以,您永远不会将字节直接写入到Channel中,相反,您是将数据写入到Buffer中;同样,您也不会从Channel中读取字节,而是将数据从Channel读入Buffer,再从Buffer获取这个字节
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值