java reactor设计模式_浅析Reactor设计模式

简介:Reactor 设计模式是一种事件驱动的设计模式,将一个或者多个客户端请求分发到不同的处理器上,来提升事件处理的效率。主要的应用场景就是java NIO当中用户处理网络请求。使用的是异步非阻塞IO

在接受Reactor 模式之前,需要先了解常见的几种IO网络模型。

1、BIO(阻塞IO模型)

以套接字模型为例:在进程空间中调用recvfrom, 其系统调用直到数据包到达且被复制到应用进程的缓冲区中或者发生错误时才可以返回,在此期间会一直等待,进程在从调用recvfrom 开始到它返回的整段事件内都是阻塞的,(举个栗子:我去餐馆吃饭,我先点菜,点完菜之后,我就坐在一旁等待,直到菜做好之后,我再开始吃,在师傅做菜的过程中,我没有做任何事情一直在等待)

184fff527a17cf87d8f7b84bc8373120.png

2、非阻塞IO模型

recvfrom 从应用层到内核的时候,如果缓冲区没有数据,会直接返回一个信息,然后过段时间之后,再去进行轮询检测这个状态,看是不是有数据到来,

98c6cf2630702ccdf9bc4474bce706fc.png

3、I/O复用模型

进程通过将一个或者多个操作阻塞在select上,select可以帮我们检测fd(文件操作符)是否处于就绪状态,如果有数据准备好,就返回可操作的信息,再进行进一步的读写操作

30c8241af59b029bcf4d646c55c248db.png

4、异步I/O

提前告知内核启动某个操作,并让内核在整个操作完成后(将数据从内核复制到用户自己的缓冲区)通知我们,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值