java ConcurrentMap 获取空值

标签 java guava

我有这个 ConcurrentMap

 ConcurrentMap<String, Byte[]> companyLogo = new MapMaker()
                   .concurrencyLevel(Runtime.getRuntime().availableProcessors())
                   .weakKeys()
                   .initialCapacity(1000)
                   .expiration(24, TimeUnit.HOURS)
                   .makeMap();

还有这段代码

companyLogo.put("cpr48124", ArrayUtils.toObject(resize (request, ((Byte[])request.getSession().getAttribute(COMPANY_LOGO_KEY+ imageId)))));
companyLogo.get("cpr48124");

但是 companyLogo.get("cpr48124"); 为空。怎么可能?

最佳答案

我不熟悉 MapMaker,但我猜 weakKeys 可能是您的问题。

很可能是您的新条目的“弱点”使其不可用,因为没有其他引用。

关于java ConcurrentMap 获取空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40285480/

相关文章:

java 帮助处理错误的 if 语句

java - Intellij 15 错误 : could not find libjava. dylib

maven - Guava 的 Spark 1.3 和 Cassandra 3.0 问题

java - 为什么 guava/java 使用 possible.isPresent() 而不是Optional.isPresent(possible)?

java - Fluent Iterable 从包含泛型类的列表中进行数组

java - 引导 java 和 python 编译器

java - 将时间戳转换为字符串

java - 在 JavaFX 8 中管理多线程的最佳方式是什么?

java - 为 Guava 设置 PITest

java - 将 Guava 添加到依赖项后,基于插件的 RCP 产品构建将无法运行