BIO、NIO、AIO、Netty (1)

Java的I/O包括标准输入输出、文件操作、网络传输等,早期的BIO( Blocking I/O)采用同步阻塞模式,每个连接对应一个线程。NIO(Non-blocking I/O)是同步非阻塞,通过多路复用器处理多个连接。AIO(Asynchronous I/O)是异步非阻塞,由操作系统通知完成I/O操作。Netty是一个基于NIO的高性能网络框架,提供异步事件驱动的网络应用框架。BIO适合连接少且固定的场景,NIO适合连接多且短的场景,AIO适合连接多且长的场景。
摘要由CSDN通过智能技术生成

1. 什么是IO

 

JavaI/O是以流为基础进行数据的输入输出的,所有数据被串行化(所谓串行化就是数据要按顺序

进行输入输出)写入输出流。简单来说就是java通过io流方式和外部设备进行交互。

Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操

作,网络上的数据传输流,字符串流,对象流等等等。

比如程序从服务器上下载图片,就是通过流的方式从网络上以流的方式到程序中,在到硬盘中

2. 在了解不同的IO之前先了解:同步与异步,阻塞与非阻塞的区别

 

同步,一个任务的完成之前不能做其他操作,必须等待(等于在打电话)

异步,一个任务的完成之前,可以进行其他操作(等于在聊QQ

阻塞,是相对于CPU来说的, 挂起当前线程,不能做其他操作只能等待

非阻塞,,无须挂起当前线程,可以去执行其他操作

3. 什么是BIO

BIO:同步并阻塞,服务器实现一个连接一个线程,即客户端有连接请求时服务器端就需要启动一

个线程进行处理,没处理完之前此线程不能做其他操作(如果是单线程的情况下,我传输的文件很

大呢?),当然可以通过线程池机制改善。BIO方式适用于连接数目比较小且固定的架构,这种方

式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理

解。

4. 什么是NIO 

 

NIO:同步非阻塞,服务器实现一个连接一个线程,即客户端发送的连接请求都会注册到多路复用

器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。NIO方式适用于连接数目多

且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,JDK1.4

之后开始支持。

 5. 什么是

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值