java - getAsync ("key").get(timeout, sec) 不等待,返回 null

标签 java scala hazelcast

Hazelcast 3.4.4。 我遇到了一个情况:map.getAsync无论如何返回 null。即使超时设置为 10000000 , TimeUnit.SECONDS它不会等待。

但是如果我输入 Thread.sleep(10000)就在 getAsync 之前,它会从 map 返回正确的值。

我想知道出了什么问题以及如何检查/修复/理解它?

更新:如果我删除 import ExecutionContext.Implicit.global从我的代码和所有依赖项(如 Scala.concurent.Future ),然后 getAsync 再次开始工作。但我仍然不满足......

最佳答案

对我来说,感觉就像您希望它等到将值放入 map 中为止,不是吗?

这并不意味着它将等待直到某个值可用,它只是为您提供了在集群完全耗尽且无法足够快地响应您的请求的情况下超时的选项。

我实际上认为没有好的方法来实现您正在寻找的内容,但您可以使用本地 EntryListeners,等待按键并通过主题转发事件(如果有意义的话)。您可能还需要 Promise 类型的实现。

关于java - getAsync ("key").get(timeout, sec) 不等待,返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31974762/

相关文章:

java - Hazelcast 内存不足

java - 如何在 java 中调用上一级重写的方法?

java - Java 中的 XML 验证 - 为什么会失败?

Java,类之间传递值

java - 计算给定设置宽度的 JTextArea 中的行数

scala - sbt-assembly:生成最小的 JAR 文件

java - 如何在 hazelcast 中高效地将对象添加到分布式队列中?

scala - 如何使涉及 future 尾递归的函数?

multithreading - Scala 本地线程和 GC 问题

java - Hazelcast:在客户端模式下每个集群只执行一次 EntryEvictedListener