首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ParallelStream和Spring Async

ParallelStream和Spring Async
EN

Stack Overflow用户
提问于 2021-07-14 12:23:38
回答 1查看 71关注 0票数 0

我有一个包含大量数据的列表,我想对每个项目进行一些计算/逻辑。

它调用了一个spring Service方法来执行逻辑。我有点困惑,哪种方式才是使用异步最快的正确方法。

现在我只是通过parrallelStream调用这个方法,如下所示

代码语言:javascript
复制
items.getItems().parallelStream().forEach(item -> addItem(item));

但我仍然看到了性能问题,它不是完全异步/快速的,我认为这是由于方法不是异步的,因为只有一个bean 1方法处理所有的事情。

我想知道在方法中添加异步是否会提高性能。或者这是正确的方法。如果我将异步添加到方法中,我是否应该仅用streams替换parrallelStreams?

或者有没有更好的方法来提高性能。

编辑

为了更清楚地说明这个问题,一个用户使用一个大列表调用一个端点,而我想对这些项执行一个业务逻辑,并返回更新后的列表。

EN

回答 1

Stack Overflow用户

发布于 2021-07-14 12:29:19

  1. 使用在单个项目上实现业务逻辑的方法创建一个单独的bean。
  2. 创建一个队列
  3. 创建一个Spring Scheduler,定期从队列中取出一个项目并异步运行该bean来处理它。

通常,您应该更喜欢使用Spring特性来进行与java特性的异步计算。

如果列表很大,不要忘记http调用超时,通常是30秒。

如果计算花费的时间更长,REST API应该接受列表,创建一个任务,并在单独的线程中检索http status 203_ACCEPTED和do task。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68372018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档