我找不到关于我们被要求进行的调查的具体答案
我看到并行流在使用少量线程时性能可能不是那么好,而且当DB在处理当前请求的同时阻止下一个请求时,它的表现显然也不是那么好
然而,我发现实现任务执行器与并行流的开销是巨大的,我们实现了一个POC,它只需要这一行代码就能满足并发需求:
List<Map<String, String>> listWithAllMaps = mappedValues.entrySet().parallelStream().map(e -> callPlugins(e))
.collect(Collectors.toList());
而在Task Executor中,我们需要重写Runnable接口并编写一些繁琐的代码,以使Runnable不是空的,并返回我们从DB中读取的值,从而导致我们花费几个小时(如果不是几天)的编码时间,生成一个可维护性较差、更容易出现bug的代码
然而,我们的CTO仍然不愿意使用并行流,因为将来可能会出现不可预见的问题
所以问题是,在一个环境中,我需要对一个数据库进行几个并发只读查询,对每个查询使用不同的Java组件/REST调用:在任何方面,使用任务执行器而不是并行流是否更可取,如果是,为什么?
使用TaskExecutor
作为CompletableFuture
的执行器
。
List<CompletableFuture> futures = mappedValues.entrySet().stream().map(e - > CompletableFuture.supplyAsync(() -> callPlugins(e), taskExecutor)).collect(Collectors.toList());
List<Map<String, String>> listWithAllMaps = futures.stream().map(CompletableFuture::join).collect(Collectors.toList());
不知道这有多麻烦。是的,这是多了一些代码,但优点是您可以轻松地配置TaskExecutor
并增加线程数、队列大小等。
免责声明:我是从头顶打出来的,所以一些小东西可能与代码片段有关。
我不熟悉Reactor框架,并尝试在现有的实现中使用它。LocationProfileService和InventoryService都返回一个Mono,并并行执行,彼此之间没有依赖关系(来自MainService)。在LocationProfileService中-发出了4个查询,最后2个查询依赖于第一个查询。 有什么更好的方法来写这个?我看到调用按顺序执行,而其中一些应该并行执行。正确的做法是
问题内容: 我正在使用python 2.7,我有一些看起来像这样的代码: 此处唯一的依赖项如下:dependent1需要等待任务1-3,Dependent2需要等待任务4-6,而dependent3需要等待依赖项1-2 …以下是可以的:首先运行全部6个任务并行,然后是前两个从属。 我希望尽可能多的任务并行运行,我已经在Google上搜索了一些模块,但是我希望避免使用外部库,并且不确定队列线程技术如
我需要找到一种在java中并行执行任务(依赖和独立)的方法。 任务A和任务C可以独立运行 任务B取决于任务A的输出 我查了java。util。并发Future和Fork/Join,但看起来我们无法向任务添加依赖项。 有人能告诉我正确的Java API吗。
我有一个任务列表 一个任务可以选择性地依赖于其他任务。 例如: A可以依赖于3个任务:B、C和D B可以依赖于2个任务:C和E 它基本上是一个有向无环图,任务的执行应该只有在依赖任务执行之后才能发生。 现在,在任何时间点,都可能有多个任务可供执行。在这种情况下,我们可以并行运行它们。 关于如何在尽可能多的并行性的同时实现这样的执行,您有什么想法吗?
我无法找到必要的信息,无论是在文档中还是在这里已经存在的问题中,这就是为什么我自己创建了一个(我还不能在类似的帖子下提问)。 我需要知道的是Spring任务执行器和调度器之间的关系。我当前的配置如下所示: 我不确定的是它是如何工作的。“谁”运行我的任务?是调度器,因为任务是和他一起安排的吗?或者调度器只是创建它们,放在队列中,由执行者运行它们? 如果没有,运行的是scheduler,我必须在特定类