WeakHashMap是否有java.util.concurrent等价物?

Nik*_*ita 46 java collections java.util.concurrent weakhashmap guava

是否可以使用Collections.synchronizedMap()并发保持正确性来重写下面的代码片段?

Collections.synchronizedMap(new WeakHashMap<Class, Object>());
Run Code Online (Sandbox Code Playgroud)

即是否可以使用java.util.concurrent中的东西?请注意,仅替换为

new ConcurrentHashMap<Class, Object>(new WeakHashMap<Class, Object>()));
Run Code Online (Sandbox Code Playgroud)

显然不行

Ste*_*ker 36

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

CacheBuilder.newBuilder().weakKeys().build()
Run Code Online (Sandbox Code Playgroud)

请注意,这会更改键等同语义,==.equals()不是在使用Class实例时无关紧要,但这是一个潜在的陷阱.


obj*_*cts 19

我不相信有.实际上javadoc建议使用Collections.synchronizedMap()

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