Java中的异步函数调用

6
假设您有三个类A、B、C,每个类都有自己的搜索函数。我想同时使用这三个搜索函数来运行一个关键字(例如“searchKey”)。如果从其中一个函数得到结果,我该如何停止另外两个搜索函数?
此外,与在每个类中拥有单独的哈希表并依次搜索它们相比,这种方法运行速度更快吗?因为搜索解析为常数时间复杂度。

2
请查看此教程:https://www.baeldung.com/java-completablefuture - Lorelorelore
谢谢,这真的很有帮助。 - EmperorPenguin
你可以使用一个好用的并发队列,但只读取其中一个元素(第一个获取到的)。其他线程稍后会将它们的结果放入该队列中,但没有人会使用它们。创建一个队列,在所有对象上调用searchKey(它需要一个键和一个队列)。等待第一个输入。 - Claude Martin
1个回答

4
你需要暴露一个公共方法来停止搜索,例如在各自的类中取消线程的标志。
至于你提到的第二点,对于在HashMap中进行关键字搜索的时间复杂度通常为O(1),如果这些关键字在同一个哈希桶中,则最坏情况下为O(n)。因此,优化的空间不大,因为它已经非常快了。如果你按顺序搜索HashMaps,你甚至都不会注意到这一点。

谢谢,我也在考虑类似的事情,但是我想了一下,如果有任何干净的内置方法来实现相同的功能,那就很好了解。 - EmperorPenguin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接