一些背景:
我有一个由独立部分组成的任务,基本上是对要处理的键值对进行 for-each 循环。通常在 10 到 30 之间。如果缓存为空,就会有一堆请求到另一个服务perpiece,导致大量请求。当缓存为空时,大约需要 20 秒。有了完整的缓存,它在一秒钟内完成(感觉立即,没有测量)。
我想使用异步代码来加快空缓存情况下的速度,所以我研究了 Java Futures,但有点不知所措。我看到了很多例子,但我缺少对事物如何工作的重要理解,尽管我了解其他语言的 Futures。这些示例通常是简单的阻塞函数调用。
我们目前使用 Java 17 和 Spring Boot(目前是 v2,正在迁移到 v3),但我对新的语言功能很满意,只要它们编译成在 Java 17 运行时上运行的东西即可。
问题:
当涉及到实际任务时,我在其他项目/语言中经常遇到在其他异步函数调用中进行异步函数调用的情况。我将如何在 Java 中做到这一点?我是否需要异步 HTTP 客户端才能获得一定的性能,或者 Java 是否可以通过阻止代码发挥其魔力?我是否必须向执行者提交内部期货?父母的未来能一样吗?样板代码最少的最现代方法是什么?这与其他语言中的异步等待语法有何关系?
根据语言的不同,异步的工作方式略有不同,并且由于某种原因,我没有找到有关此的任何详细信息。另外,我很难区分 Java 世界中过时的信息和最新的信息。我觉得这个问题很愚蠢,但我没有在大量的博客文章中找到太多有用的信息。