线程模型在java中是由,Reactor线程模型

 2023-09-24 阅读 19 评论 0

摘要:一 传统阻塞线程模型 第一:服务器端有一个Acceptor线程接收客户端请求 第二:Acceptor接收到每一个客户端请求后,为每一个线程分配一个线程处理客户端请求 线程模型在java中是由、缺点: 第一:当数据量很大或者客户端很多的时候,就会

一 传统阻塞线程模型

在这里插入图片描述

第一:服务器端有一个Acceptor线程接收客户端请求
第二:Acceptor接收到每一个客户端请求后,为每一个线程分配一个线程处理客户端请求

线程模型在java中是由、缺点:
第一:当数据量很大或者客户端很多的时候,就会创建大量的线程对象
第二:连接建立后,没有数据可读,会一直处于阻塞状态

二 Reactor单线程模型

在这里插入图片描述

第一:Reactor对象通过Selector(多路复用器)监控客户端请求事件
第二: 收到事件后,进行分发
第三:如果是建立连接的事件则交给Acceptor,通过accept处理连接请求,然后创建一个Handler对象处理连接完成后的后续业务处理;如果不是建立连接则直接调用Handler来处理

netty线程模型,缺点:
单个线程要负责连接、读写请求,如果客户端连接数量太多,则会无法发挥CPU多核的性能,容易造成性能瓶颈

三 Reactor多线程模型

在这里插入图片描述

第一:Reactor线程通过Selector多路复用器监听客户端事件
第二:收到事件后,进行转发
第三:如果是建立连接的请求,则通过Acceptor线程的accept处理连接,然后创建一个Handler对象处理后续的请求;如果不是连接请求则由Reactor分发,调用Handler来处理
第四:Handler不会自己处理具体的读写请求,而是直接提交给一个线程池去执行,然后就可以返回了,然后由线程池获取一个线程执行这个请求

redis线程模型。优点:
可以充分利用多核CPU处理能力
缺点:
Reactor要处理所有的事件监听和响应,是单线程运行,并发量大的时候,容易出现性能瓶颈

四 主从Reactor多线程模型

在这里插入图片描述

第一:MainReactor通过通过多路复用器,监听客户端连接请求,然后调用Acceptor的accept处理连接请求

java的线程模型包括。第二:Acceptor处理连接事件,然后Main Reactor将连接分配给SubReactor
第三:SubReactor将连接加入到连接队列并监听,然后创建Handler处理各种事件
第四:Handler不处理具体的业务逻辑,而是将请求或者事件提交给线程池去处理
第五:线程池分配线程处理业务逻辑,并返回结果

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/93017.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息