首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有WeakHashMap的java.util.concurrent等价物?

有没有WeakHashMap的java.util.concurrent等价物?
EN

Stack Overflow用户
提问于 2010-02-13 08:16:36
回答 7查看 19.9K关注 0票数 52

是否可以在不使用Collections.synchronizedMap()的情况下重写以下代码,同时保持并发的正确性?

代码语言:javascript
复制
Collections.synchronizedMap(new WeakHashMap<Class, Object>());

也就是说,有没有什么来自java.util.concurrent的东西可以替代?请注意,只需将

代码语言:javascript
复制
new ConcurrentHashMap<Class, Object>(new WeakHashMap<Class, Object>()));

显然行不通

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-02-13 08:38:57

GuavaCacheBuilder类允许您轻松完成此操作。

代码语言:javascript
复制
CacheBuilder.newBuilder().weakKeys().build()

请注意,这会将关键相等语义更改为==而不是.equals(),这在使用Class实例的情况下无关紧要,但这是一个潜在的陷阱。

票数 40
EN

Stack Overflow用户

发布于 2010-02-13 08:34:21

我不相信有这回事。事实上,javadoc建议使用Collections.synchronizedMap()

与大多数集合类一样,此类不是同步的。可以使用Collections.synchronizedMap方法构造同步的WeakHashMap。

票数 22
EN

Stack Overflow用户

发布于 2017-10-14 00:04:26

Cafeine是Guava缓存的一个热门竞争对手。

代码语言:javascript
复制
- keys automatically wrapped in weak references
- values automatically wrapped in weak or soft references

用法:

代码语言:javascript
复制
LoadingCache<Key, Graph> graphs = Caffeine.newBuilder()
 .weakKeys()
 .weakValues()
 .build(key -> createExpensiveGraph(key));
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2255950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档