java IO(一):一些概念整理

1.概念整理:

同步(异步),阻塞(非阻塞):

关于这两类概念,不知是否可以不用区分的太清楚,网上也是众说纷纭,自我总结下:

都是涉及事件的流程是否依赖于当前正在运行的事件是否结束,但是在java中,同步异步貌似更多涉及任务调度,而阻塞与非阻塞更加注重单个事件请求方面。

 

2.IO操作:

 

IO操作一般分为:硬盘读写,socket读写以及对外设的读写

其步骤通常可以分为两步:

1.查看数据是否就绪

2.进行数据拷贝

                                                         

阻塞(非阻塞)IO:

根据查看数据是否就绪分为阻塞和非阻塞IO,阻塞就是要一直等待数据就绪,而非阻塞就是不需要等待,直接返回给调用者是否就绪

比如java里面socket的read就是阻塞IO函数

 

同步(异步)IO

同步(异步)IO是根据任务调度来说的

同步IO是指一个线程进行IO操作,在IO操作完成之前,线程会被阻塞,反之即为异步IO

 

3.IO模型:

IO模型分为阻塞IO,非阻塞IO,多路复用IO,信号驱动IO,异步IO

着重了解下多路复用IO和异步IO

多路复用IO:

典型案例:使用一个线程来管理多个socket。即一个线程轮询socket的状态,只有当socket可以进行读写时,才会进行实际的IO读写操作。

java NIO实际上就是多路复用的IO,相比与多线程+阻塞IO的操作,多路复用只需要使用一个线程

异步IO:

IO的两步操作都不会引起线程阻塞。

 

4.IO设计模式

经典模式:

多线程+线程池

高性能模式(Reactor,Proactor):

多路复用IO:Reactor模式

异步IO:Proactor模式


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值