Class Cache.Builder<K,V>
- Type Parameters:
K- The key type.V- The value type.
Cache instances.
Example:
See Also:
-
Method Summary
Modifier and TypeMethodDescriptionbuild()Builds a newCacheinstance with the configured settings.Sets the caching mode for this cache.Conditionally enables logging of cache statistics when the JVM exits.Enables logging of cache statistics when the JVM exits.maxSize(int value) Specifies the maximum number of entries allowed in this cache.Specifies the default supplier function for computing values when keys are not found.Enables thread-local caching.weak()Sets the caching mode toWEAK.
-
Method Details
-
build
Builds a newCacheinstance with the configured settings.- Returns:
- A new immutable
Cacheinstance.
-
cacheMode
Sets the caching mode for this cache.Available modes:
NONE- No caching (always invoke supplier)WEAK- Weak caching (usesWeakHashMap)FULL- Full caching (usesConcurrentHashMap, default)
Example:
// No caching for testing Cache<String,Object>cache1 = Cache.of (String.class , Object.class ) .cacheMode(CacheMode.NONE ) .build();// Weak caching for Class metadata Cache<Class<?>,ClassMeta>cache2 = Cache.of (Class.class , ClassMeta.class ) .cacheMode(CacheMode.WEAK ) .build();// Full caching (default) Cache<String,Pattern>cache3 = Cache.of (String.class , Pattern.class ) .cacheMode(CacheMode.FULL ) .build();- Parameters:
value- The caching mode.- Returns:
- This object for method chaining.
-
logOnExit
Conditionally enables logging of cache statistics when the JVM exits.When enabled, the cache will register a shutdown hook that logs the cache name, total cache hits, and total cache misses (size of cache) to help analyze cache effectiveness.
- Parameters:
value- Whether to enable logging on exit.idValue- The identifier to use in the log message.- Returns:
- This object for method chaining.
-
logOnExit
Enables logging of cache statistics when the JVM exits.When enabled, the cache will register a shutdown hook that logs the cache name, total cache hits, and total cache misses (size of cache) to help analyze cache effectiveness.
Example output:
Pattern cache: hits=1523, misses: 47
This is useful for:
- Performance tuning and identifying caching opportunities
- Determining optimal max size values
- Monitoring cache efficiency in production
- Parameters:
value- The identifier to use in the log message.- Returns:
- This object for method chaining.
-
maxSize
Specifies the maximum number of entries allowed in this cache.When the cache size exceeds this value, the entire cache is cleared to make room for new entries. This is a simple eviction strategy that avoids the overhead of LRU/LFU tracking.
Default value: 1000 (or value of system property
juneau.cache.maxSize )Notes:
- Setting this too low may cause excessive cache clearing and reduce effectiveness
- Setting this too high may consume excessive memory
- For unbounded caching, use
Integer.MAX_VALUE(not recommended for production)
- Parameters:
value- The maximum number of cache entries. Must be positive.- Returns:
- This object for method chaining.
-
supplier
Specifies the default supplier function for computing values when keys are not found.This supplier will be used by
Cache.get(Object)when a key is not in the cache. Individual lookups can override this supplier usingCache.get(Object, Supplier).Example:
Cache<String,Pattern>
cache = Cache .of (String.class , Pattern.class ) .supplier(Pattern::compile) .build();// Uses default supplier Patternp =cache .get("[a-z]+" );- Parameters:
value- The default supplier function. Can benull .- Returns:
- This object for method chaining.
-
threadLocal
Enables thread-local caching.When enabled, each thread gets its own separate cache instance. This is useful for thread-unsafe objects like
MessageFormatthat need to be cached per thread.This is a shortcut for wrapping a cache in a
ThreadLocal, but provides a cleaner API.Example:
// Thread-local cache for MessageFormat instances Cache<String,MessageFormat>cache = Cache .of (String.class , MessageFormat.class ) .maxSize(100) .threadLocal () .build();This is equivalent to:
ThreadLocal<Cache<String,MessageFormat>>
cache = ThreadLocal.withInitial (() -> Cache .of (String.class , MessageFormat.class ) .maxSize(100) .build());- Returns:
- This object for method chaining.
-
weak
Sets the caching mode toWEAK.This is a shortcut for calling
cacheMode(CacheMode.WEAK) .Weak caching uses
WeakHashMapfor storage, allowing cache entries to be garbage collected when keys are no longer strongly referenced elsewhere.Example:
// Weak caching for Class metadata Cache<Class<?>,ClassMeta>cache = Cache.of (Class.class , ClassMeta.class ) .weak () .build();- Returns:
- This object for method chaining.
- See Also:
-