simple.util.cache
Class TimeCache

java.lang.Object
  extended by simple.util.cache.TimeCache

public class TimeCache
extends java.lang.Object

This is a LRU, Least Recently Used, TimeCache for caching objects. This ensures that the TimeCache does not allow too many objects to be cached. This does not account for anything other than the number of lockable regions, i.e. synchronized Least Recently Used lists, and the maximum number of items a region can have before it removes the least recently used objects.

When objects are cached they can be cached for a specified number of miliseconds, when this expires then the time cache will remove the item, this removal is very accurate to the timeout specified for the object. If no time out is given a default timeout for this is used. The maximum capacity of the TimeCache is regions * limit, however this does not provide an exact Least Recently Used semantic as some regions are likely to have more hits than others.

Author:
Niall Gallagher

Constructor Summary
TimeCache()
          This is used to create a TimeCache object for storing objects.
TimeCache(int regions, int limit)
          This is used to create a TimeCache object for storing objects.
TimeCache(int regions, int limit, int timeout)
          This is a constructor method used by 'this' to specify the characteristics that the TimeCache may have.
 
Method Summary
 void cache(java.lang.Object key, java.lang.Object obj)
          This will store the object given in the TimeCache under the reference specified.
 void cache(java.lang.Object key, java.lang.Object obj, int timeout)
          This will store the object given in the TimeCache under the reference specified.
 void clear()
          This will remove all items from the TimeCache.
 boolean contains(java.lang.Object key)
          This will check to see if an object exists within the TimeCache.
 java.lang.Object lookup(java.lang.Object key)
          This will search the TimeCache to see if the item in the time cache.
 java.lang.Object remove(java.lang.Object key)
          This will remove the object cached using the specified key.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TimeCache

public TimeCache()
This is used to create a TimeCache object for storing objects. This cache implementation is an Least Recently Used cache meaning that the Least Recently Used items are removed if the size of a region grows to large. This has a maximum capacity of 60, unlikely.


TimeCache

public TimeCache(int regions,
                 int limit)
This is used to create a TimeCache object for storing objects. This cache implementation is an Least Recently Used cache meaning that the Least Recently Used items are removed if the size if the region grows to large. This constructor configures the TimeCache as specified.

Parameters:
regions - number of regions that are synchronized
limit - the maximum amount of objects per region

TimeCache

public TimeCache(int regions,
                 int limit,
                 int timeout)
This is a constructor method used by 'this' to specify the characteristics that the TimeCache may have. This will allow the max timeout to be specified for the TimeCache.

Parameters:
regions - number of regions that are synchronized
limit - the maximum amount of objects per region
timeout - the default timeout peroid for an object
Method Detail

cache

public void cache(java.lang.Object key,
                  java.lang.Object obj)
This will store the object given in the TimeCache under the reference specified. The object may exist in the TimeCache for a limited time only specified by a timeout.

Parameters:
key - this is the key that references the object
obj - this is the object that is to be stored

cache

public void cache(java.lang.Object key,
                  java.lang.Object obj,
                  int timeout)
This will store the object given in the TimeCache under the reference specified. The object may exist in the TimeCache for a limited time only specified by a timeout.

Parameters:
key - this is the key that references the object
obj - this is the object that is to be stored
timeout - max amount of time this can be cached.

lookup

public java.lang.Object lookup(java.lang.Object key)
This will search the TimeCache to see if the item in the time cache. If it is in the cache this will return it. This provides a very concurrent lookup mechanism, where threads have less contention for locks, as the key decides which list to use based on the value of the key hash code.

Parameters:
key - this is the key that references the object
Returns:
the object that is referenced by the key

contains

public boolean contains(java.lang.Object key)
This will check to see if an object exists within the TimeCache. If it exists this returns true else false.

Parameters:
key - this is the key that references the object
Returns:
a boolean indicating the status of the object

remove

public java.lang.Object remove(java.lang.Object key)
This will remove the object cached using the specified key. If the object is not stored this does nothing. This ensures that no reference fot the object is left.

Parameters:
key - this is the key that references the object

clear

public void clear()
This will remove all items from the TimeCache. This is used to synchronize the cached objects.