Bounded LRU Cache
A common use case. A cache data structure that:
- has a bounded maximum size and thus memory consumption (which in turn implies a cache eviction policy like LRU)
- is safe and performant for concurrent use
AFAICT, there’s nothing in the JDK or the concurrency JSRs that hits both these requirements. I googled and found the open source Concurrent Linked Hashmap library, which does.
[An incorrect comment about the project missing tests has been removed]
Unbounded Garbage Collectable Cache
If instead, you want a cache that will grow with use, but can be reclaimed if memory is short, then the use of a ConcurrentReferenceHashMap, configured with SoftReferences, is a good solution.