【发布时间】:2021-02-04 01:09:28
【问题描述】:
我的 Spring Boot 应用程序中有一个用例如下:
我想使用以下函数从响应中获取 id 字段值:
String id = getIdFromResponse(response);
如果我在响应中没有得到任何 id,那么我使用以下函数检查请求参数中是否存在 id 字段:
String id = getIdFromRequest(request);
到目前为止,我正在按顺序调用它们。但我想让这两个函数并行运行,我想从它们中的任何一个获得 id 后立即停止。
我想知道是否有任何方法可以在 Java 8 中使用 streams 来实现这一点。
【问题讨论】:
-
小心在生产环境中执行此代码,有时不应该进行数据库调用,这可以通过
if检查来阻止。 -
这是纳曼的一个好点。顺序处理确保第二次调用仅在第一次调用没有返回结果时发生。这允许使用调用可能返回
id的概率来优化流程。并行的不保证并且很可能执行两个数据库调用(竞争条件)。 -
@NikolasCharalambidis 当然,感谢您指出这一点。我会记住这一点。然而,这两个函数实际上都没有与 DB 交互。
标签: java spring multithreading spring-boot java-8