当前位置: 首页 > 知识库问答 >
问题:

Rxjava Schedulers.newThread()上限

温翔宇
2023-03-14

我使用RxJava与Spring Boot。现在对于每个请求,我启动一个说10个子线程(使用Schedulers.nextThread())。

我将在production env中使用它,在那里我可以有多达500个并发请求

所以我的问题是a)这是一种良好的做法吗。b) 我可以为要生成的线程数量添加任何上限吗?c) 我可以在Java中运行多少并发线程(比如32GB RAM)?

所以在我的案例中,如果我有500个并发请求,并且每个请求包含10个线程,那么总共有5500个并发线程。

在生产环境中,线程数是否可以。

共有2个答案

陈正业
2023-03-14

对于网络调用,应使用调度程序。io()而不是调度程序。newThread()。因为线程创建成本很高

如果您需要限制同时网络调用的数量,请使用Scheduler.from(Executors.newFixedThreadPool(n))

邢炯
2023-03-14

没有充分的理由产生那么多线程。同时可执行的代码片段的数量受到您可以访问的CPU内核数量的限制。台式机可能有两个或四个核心,而服务器可能有几十个核心。

您需要的是一个由执行器管理的线程池,例如ScheduledExecutorService。这可以由调度程序包装。from()创建要与RxJava一起使用的调度程序。通常,您将构建一个线程池,其核心数量不超过两倍。

当您使用观察()订阅()运算符时,传入的调度程序用于为该观察者链选择单个线程。

有了500个同时请求和20个核心服务器,您一次只能处理20个操作,这意味着您必须将要处理的请求排队。如果创建5000或40个线程,一次只能提前20个请求。如果创建5000个线程,则要求执行器处理队列;如果创建40个线程,那么队列将在RxJava代码中处理。

 类似资料:
  • 问题内容: python的内存有限制吗?我一直在使用python脚本从最小150mb大的文件中计算平均值。 根据文件的大小,我有时会遇到一个。 可以为python分配更多的内存,这样我就不会遇到错误吗? 编辑:下面的代码 注意:文件大小可能相差很大(最大20GB),文件的最小大小为150mb 问题答案: (这是我的第三个答案,因为我误解了您的代码在原始代码中所做的事情,然后在第二个错误中犯了一个小

  • 问题内容: 我有以下代码来检查(上传的简历和推荐信是否与所需类型(pdf或doc或docx)匹配)和大小(小于400 kb) 这无法正常工作,甚至连txt文件都没有通过+大小限制,这是怎么回事? 谢谢, 问题答案: 下面仅使用mime类型来验证文件,然后检查两者的大小。有关大多数MIME类型的列表,请参见此处或google。

  • 我正在开发一个带有角前端和springboot2.1.2后端的项目,并实现了一种上传图像的方法。但是,它仅在图像是 org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException:字段图像超过其最大允许大小1048576字节 我已经看了这些问题:我正在尝试设置maxFileSize但不尊重Sp

  • 我想将文件从一台服务器上传到另一台FTP服务器,以下是我的上传文件代码,但它抛出错误为: 远程服务器返回错误:(550)文件不可用(例如,找不到文件,无法访问)。 这是我的代码: 你能告诉我哪里出了问题吗?

  • 于具有上传功能的Web网页进行的操作。上传方法会因网页的设定而异。 仅能上传PS Vita专用存储卡内保存的图像。

  • 上传文件 内置的上传只是上传到本地服务器,上传到远程或者第三方平台的话需要自己扩展。 假设表单代码如下: <form action="/index/index/upload" enctype="multipart/form-data" method="post"> <input type="file" name="image" /> <br> <input type="submit" value