java rector_Java中的Reactor是什么
Java中的Reactor是什么
发布时间:2020-06-28 10:14:43
来源:亿速云
阅读:212
作者:Leah
今天就跟大家聊聊有关Java中的Reactor,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
Reactor反应器模式
到目前为止,高性能网络编程都绕不开反应器模式。很多著名的服务器软件或者中间件都是基于反应器模式实现的,如Nginx、Redis、Netty。
反应器模式是高性能网络编程的必知、必会的模式。
Reactor简介
反应器模式由Reactor反应器线程、Handlers处理器两大角色组成:
(1)Reactor反应器线程的职责:负责响应IO事件,并且分发到Handlers处理器。
(2)Handlers处理器的职责:非阻塞的执行业务处理逻辑。
从上面的反应器模式定义,看不出这种模式有什么神奇的地方。当然,从简单到复杂,反应器模式也有很多版本。根据前面的定义,仅仅是最为简单的一个版本。
多线程OIO的致命缺陷
在Java的OIO编程中,最初和最原始的网络服务器程序,是用一个while循环,不断地监听端口是否有新的连接。如果有,就调用一个和处理函数来完成,示例代码如下:@Test
public void client() throws IOException {
Socket client = new Socket("127.0.0.1", 9999);
Writer writer = new OutputStreamWriter(client.getOutputStream());
writer.write("Hello World");
writer.flush();
writer.close();
client.close();
}
@Test
public void server() throws IOException {
ServerSocket server = new ServerSocket(9999);
while (true){
Socket socket = server.accept();
Reader reader = new InputStreamReader(socket.getInputStream());
print(reader);
reader.close();
socket.close();
server.close();
}
}
这种方法的最大问题是:如果前一个网络连接的handle(socket)没有处理完,那么后面的连接请求没法被接收,于是后面的请求通通会被阻塞住,服务器的吞吐量就太低了。对于服务器来说,这是一个严重的问题。
看完上述内容,你们对Java中的Reacto有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
java rector_Java中的Reactor是什么相关推荐
- java rector_Java IO的Reactor模式
1. Reactor出现的原因 Reator模式是大多数IO相关组件如Netty.Redis在使用时的IO模式,为什么需要这种模式,如何设计来解决高性能并发的呢? 最最原始的网络编程思路就是服务 ...
- Java反应式框架Reactor中的Mono和Flux,Java程序员必看
由于响应流的特点,我们不能再返回一个简单的POJO对象来表示结果了.必须返回一个类似Java中的Future的概念,在有结果可用时通知消费者进行消费响应. Reactive Stream规范中这种被定 ...
- Java I/O中的Reactor模式
传统I/O模式 我们之前的的I/O文章中有过如下这种图: 如上模型中,存在的问题 当并发数量很大的时候,会创建大量的线程,占用很大的系统资源 当连接创建后,如果当前线程暂时没有可以读的数据,那么改县城 ...
- Java的中BIO、NIO、AIO-1
Java的中BIO.NIO.AIO-1 java 最近在项目中用到TCP通信来完成命令和运行结果的交互,用的是典型的TCP通信中的C/S架构,原因很简单:在业务需求低的环境下,这种架构简单.稳定还容 ...
- Java开发中Netty线程模型原理解析!
Java开发中Netty线程模型原理解析,Netty是Java领域有名的开源网络库具有高性能和高扩展性的特点,很多流行的框架都是基于它来构建.Netty 线程模型不是一成不变的,取决于用户的启动参数配 ...
- Java 并发编程解析 | 如何正确理解Java领域中的多线程模型,主要用来解决什么问题?
苍穹之边,浩瀚之挚,眰恦之美: 悟心悟性,善始善终,惟善惟道! -- 朝槿<朝槿兮年说> 写在开头 我国宋代禅宗大师青原行思在<三重境界>中有这样一句话:" 参禅之初 ...
- 什么是反应式编程(超详细说明),反应式编程和命令式编程的区别。如何使用Spring中的Reactor。Reactor中常用的操作。Mono和Flux。
文章目录 一.反应式编程初探 什么是反应式编程 为什么需要反应式编程? 反应式编程的规范 二.上手反应式编程(使用Spring中的Reactor) 对比反应式编程和命令式编程代码 添加相应依赖 Mon ...
- 统计java文件中的代码行数
统计Java代码行数工具类 -- CodeCounterUtil.java 统计指定目录下的java文件中代码行数 -- public static int getCodeNumFromFo ...
- Java虚拟机规范阅读(二)IEEE754简介以及Java虚拟机中的浮点算法
什么是浮点数 在计算机系统的发展过程中,曾经提出过多种方法表达实数.典型的比如相对于浮点数的定点数(Fixed Point Number).在这种表达方式中,小数点固定的位于实数所有数字中间的某个位置 ...
最新文章
- nginx安装第三方模块echo
- [机器学习] ML重要概念:梯度(Gradient)与梯度下降法(Gradient Descent)
- 自定义jstl标签库
- 告诉家里做饭的人,这些食物一起吃才是大补!
- 八皇后问题--C语言学习笔记
- matlab log函数
- 记录mt7615e wifi 驱动移植到openwrt cc
- MYSQL 索引 主键 外键
- vue 怎么解析xml
- freeswitch通过 sip网关联系外部世界
- 杭州电子科技大学acm--2017
- 搞定HTML\CSS之background属性
- 关于word2vec词向量化
- django MVT模式介绍
- JAVA 按姓氏分类的电话薄(界面、方法的实现和讲解)
- 浅谈综述论文:文献综述
- 短视频底层实操课,让你迅速从短视频新手变成高手
- 用友企业空间 - http://upesn.com
- matlab的无穷大怎样表示_matlab中从一到无穷大怎么表示
- 计算机与代数---如何计算ln---方法和实现