io,读写,指的是内存,
读是内存从文件网络等读取数据
写是内存写数据到文件网络等
bio(同步阻塞io)
叫一个线程停留在一个水壶那,直到这个水壶烧开,才去处理下一个水壶
一个请求创建一个线程
nio(java的nio就是linux的多路复用io)Netty、Dubbo、ZooKeeper等都是基于NIO方式实现
- bio面向字节流,nio面向块(buffer)
- 直接内存(非堆内存),减少拷贝次数(原来是堆内存拷贝到非堆内存,在拷贝到缓冲区)
- 内核和磁盘io通过channel,不占用cpu资源(原来调用io资源需要cpu参与)
- 多路复用器selector(检查多个channel是否准备好),select,epoll
所有数据都通过Buffer对象处理,所以,您永远不会将字节直接写入到Channel中,相反,您是将数据写入到Buffer中;同样,您也不会从Channel中读取字节,而是将数据从Channel读入Buffer,再从Buffer获取这个字节
异