想要
许多将进行datbase调用和阻止以改善和扩展性能的线程。
问题:
- 标准Java可完成的将来API does not work well with
blocking/IO tasks, even when using ManagedBlocker.
- 如果使用不存在此问题的库,则太多异步请求同时具有至少1个扩展问题:
由于每个线程需要多少内存,同时- 创建的线程太多[[创建]]可能导致内存不足错误。而且没有好的默认ThreadPoolExecutors允许设置线程池参数(例如最大线程数),然后为传入任务提供队列系统以等待线程可用之前等待。
示例
我想扩展一个程序,该程序需要发出3000个异步db请求。我不想一次发出3000个请求,而是想在任何给定时间将其限制为50个,并将其余2950个队列排队,然后在任务完成时一次处理其余2950个请求。理想情况下,我想使用现有的库来进行此操作,以使用新的自定义代码进行重新发明,因为我假设可以这样做,但是我不确定如何使用各种异步Java SDK的API,这些API会不断出现出来。
想要许多线程将进行datbase调用和阻塞,以提高和扩展性能。问题:标准的Java可完成的将来API不适用于阻塞/ IO任务,...
我认为有几种解决无限线程池的方法。正如其他人指出的那样,一种方法是从由有限线程池支持的Executor创建RxJava Scheduler。这非常简单,可能是最好的方法。