是否存在并发弱哈希映射的非jdk实现?

时间:2015-08-07 10:13:25

标签: java garbage-collection thread-safety weak-references

我需要一个并发的弱哈希映射,其中键与相等而不是身份进行比较,如WeakHashMap。

这个类似的老问题的答案:

Is there java.util.concurrent equivalent for WeakHashMap?

明确表示JDK中没有类似的东西。 然而,它接受的答案错误地表明Guava的CacheBuilder可以做到这一点,但CacheBuilder使用身份比较,而不是我所要求的相等比较。

几年前曾问过类似的问题,与此同时发生了一些变化,现在可能第三方图书馆提供了我需要的实现?

我可以使用WeakHashMap实现这一点,方法是将对象存储为缓存作为映射的键,并将弱引用作为其值,但它不是线程安全的。

在Collections.synchronizedMap中包装WeakHashMap实际上不是一个选项,因为争用太高了。

如果当前没有替代品,我正在考虑在WeakHashMap上以ConcurrentHashMap包装的方式实现某些东西,但这真的是个好主意吗?有人曾经这样做过吗?

用例:

我之所以这样问是因为我正在实现单个值的线程安全缓存(不是Google的Cache类中的键值关联),并且我希望这些值在没有对它们的引用时进行垃圾收集。

0 个答案:

没有答案