如何从Java SDK或类似的SDK(即rxJava,项目反应器)获取可扩展的I / O绑定异步多线程?

问题描述 投票:0回答:1

想要

许多将进行datbase调用和阻止以改善和扩展性能的线程。

问题:

  1. 标准Java可完成的将来API does not work well with blocking/IO tasks, even when using ManagedBlocker.
  2. 如果使用不存在此问题的库,则太多异步请求同时具有至少1个扩展问题:
      由于每个线程需要多少内存,同时
    • 创建的线程太多[[创建]]可能导致内存不足错误。而且没有好的默认ThreadPoolExecutors允许设置线程池参数(例如最大线程数),然后为传入任务提供队列系统以等待线程可用之前等待。
  3. 示例

我想扩展一个程序,该程序需要发出3000个异步db请求。我不想一次发出3000个请求,而是想在任何给定时间将其限制为50个,并将其余2950个队列排队,然后在任务完成时一次处理其余2950个请求。理想情况下,我想使用现有的库来进行此操作,以使用新的自定义代码进行重新发明,因为我假设可以这样做,但是我不确定如何使用各种异步Java SDK的API,这些API会不断出现出来。

想要许多线程将进行datbase调用和阻塞,以提高和扩展性能。问题:标准的Java可完成的将来API不适用于阻塞/ IO任务,...

java java-stream rx-java reactive-programming project-reactor
1个回答
0
投票
我认为有几种解决无限线程池的方法。正如其他人指出的那样,一种方法是从由有限线程池支持的Executor创建RxJava Scheduler。这非常简单,可能是最好的方法。
© www.soinside.com 2019 - 2024. All rights reserved.