我需要一个并发的弱哈希映射,其中键与相等而不是身份进行比较,如WeakHashMap。
这个类似的老问题的答案:
Is there java.util.concurrent equivalent for WeakHashMap?
明确表示JDK中没有类似的东西。 然而,它接受的答案错误地表明Guava的CacheBuilder可以做到这一点,但CacheBuilder使用身份比较,而不是我所要求的相等比较。
几年前曾问过类似的问题,与此同时发生了一些变化,现在可能第三方图书馆提供了我需要的实现?
我可以使用WeakHashMap实现这一点,方法是将对象存储为缓存作为映射的键,并将弱引用作为其值,但它不是线程安全的。
在Collections.synchronizedMap中包装WeakHashMap实际上不是一个选项,因为争用太高了。
如果当前没有替代品,我正在考虑在WeakHashMap上以ConcurrentHashMap包装的方式实现某些东西,但这真的是个好主意吗?有人曾经这样做过吗?
用例:
我之所以这样问是因为我正在实现单个值的线程安全缓存(不是Google的Cache类中的键值关联),并且我希望这些值在没有对它们的引用时进行垃圾收集。