# Package org.apache.groovy.util.concurrentlinkedhashmap

This package contains an implementation of a bounded `ConcurrentMap` data structure.

`Weigher` is a simple interface for determining how many units of capacity an entry consumes. Depending on which concrete Weigher class is used, an entry may consume a different amount of space within the cache. The `Weighers` class provides utility methods for obtaining the most common kinds of implementations.

`EvictionListener` provides the ability to be notified when an entry is evicted from the map. An eviction occurs when the entry was automatically removed due to the map exceeding a capacity threshold. It is not called when an entry was explicitly removed.

The `ConcurrentLinkedHashMap` class supplies an efficient, scalable, thread-safe, bounded map. As with the `Java Collections Framework` the "Concurrent" prefix is used to indicate that the map is not governed by a single exclusion lock.

See Also:
  http://code.google.com/p/concurrentlinkedhashmap/

- Interface Summary
  Interface | Description
  --- | ---
  EntryWeigher<K,​V> | A class that can determine the weight of an entry.
  EvictionListener<K,​V> | A listener registered for notification when an entry is evicted.
  Weigher<V> | A class that can determine the weight of a value.

- Class Summary
  Class | Description
  --- | ---
  ConcurrentLinkedHashMap<K,​V> | A hash table supporting full concurrency of retrievals, adjustable expected concurrency for updates, and a maximum capacity to bound the map by.
  ConcurrentLinkedHashMap.Builder<K,​V> | A builder that creates `ConcurrentLinkedHashMap` instances.
  Weighers | A common set of `Weigher` and `EntryWeigher` implementations.