JAVA IO

Stream

包括字符流(Reader, Writer),字节流(InputStream, OutputStream).

前者的操作经过缓冲区再操作文件, 后者直接操作文件。

BIO

同步阻塞IO, NIO出现之前主要使用BIO以及新建线程的方式解决并发请求。

下面是BIO的经典编程模型

while循环不断调用accpet, 阻塞式的获取建立的连接,当方法返回时,创建新线程对socket进行处理。

适用于连接的数量不大时,比如单机1000以下。

NIO

Java NIO的三个核心组件:Channel, Buffer, Selector,底层模型是IO多路复用模型(Reactor模型)。

Channel包括 FileChannel, DatagramChannel, SocketChannel, SocketServerChannel

对应文件IO、UDP和TCP(Server和Client)

数据从buffer写入channel, 或从channel读入buffer。MappedByteBuffer采用内存映射文件的方式处理输入输出, 把文件的一段区域映射到虚拟内存中,可以像访问内存一样访问文件适合处理大文件。

Selector监听多个channel的事件,实现IO的多路复用。在linux系统下调用的是epoll/select

AIO

异步非阻塞的IO,方法调用后立刻返回,由操作系统来执行某个操作,在操作完成状态改变时通知对应的线程,进行处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值