cache4j v0.4 API

net.sf.cache4j.impl
Class BlockingCache

java.lang.Object
  extended bynet.sf.cache4j.impl.BlockingCache
All Implemented Interfaces:
Cache, ManagedCache

public class BlockingCache
extends java.lang.Object
implements Cache, ManagedCache

Класс BlockingCache это реализация интерфейса Cache с блокированием на уровне объектов. Вызов любокого метода get, put, remove приводит к блоктровке идентификатора объекта а потом к снятию блокировки (в пределах вызваного метода). Если метод get вернул null то блокировка с идентификатора не снимается. Поток, который заблокировал идентификатор, должен загрузить объект и поместить в кеш, только после этого локировака будет снята и все заблокированые потоки смогут продолжить работу. Такое поведение позволяет загружать(создавать) объект, которого нет в кеше, только в одном потоке.
Получение экземпляра кеша:

     Cache _personCache = CacheFactory.getInstance().getCache("Person");
 
Получение\помещение объекта:
     Long id = ... ;
     Person person = null;
     try {
         person = (Person)_personCache.get(id);
     } catch (CacheException ce) {
         //throw new Exception(ce);
     }
     if (person != null) {
         return person;
     }
     try {
         person = loadPersonFromDb(id);
     } catch (Exception e) {
         //throw new Exception(e);
     } finally {
         try {
             _personCache.put(id, person);
         } catch (CacheException ce) {
             //throw new Exception(ce);
         }
     }
 
Удаление объекта:
     Person person = ... ;
     Long id = person.getId();
     removePersonFromDb(id);
     try {
         _personCache.remove(id);
     } catch (CacheException ce) {
         //throw new Exception(ce);
     }
 

Version:
$Revision: 1.0 $ $Date:$
Author:
Yuriy Stepovoy. stepovoy@gmail.com

Constructor Summary
BlockingCache()
           
 
Method Summary
 void clean()
          Выполняет очистку кеша.
 void clear()
          Удаляет все объекты из кеша
 java.lang.Object get(java.lang.Object objId)
          Возвращает объект из кеша.
 CacheConfig getCacheConfig()
          Возвращает конфигруцию кеша
 CacheInfo getCacheInfo()
          Возвращает информацию о кеше
 void put(java.lang.Object objId, java.lang.Object obj)
          Помещает объект в кеш.
 void remove(java.lang.Object objId)
          Удаляет объект из кеша.
 void setCacheConfig(CacheConfig config)
          Устанавливает конфигурацию кеша.
 int size()
          Возвращает количество объектов в кеше
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BlockingCache

public BlockingCache()
Method Detail

put

public void put(java.lang.Object objId,
                java.lang.Object obj)
         throws CacheException
Помещает объект в кеш. Если перед вызовом put() был вызван метод get() и он вернул null то в put() нужно передать такой же objId как и в метод get() иначе возникнет CacheException.

Specified by:
put in interface Cache
Parameters:
objId - идентификатор объекта
obj - объект
Throws:
CacheException - если возникли проблемы, например вычисление размера объекта
java.lang.NullPointerException - если objId==null

get

public java.lang.Object get(java.lang.Object objId)
                     throws CacheException
Возвращает объект из кеша. Если метод вернул null то происходит блокирование объект с переданным objId. После этого в кеш нужно поместить объект с укзаным ранее objId иначе при вызове любого метода будет возникать CacheException.

Specified by:
get in interface Cache
Parameters:
objId - идентификатор объекта
Returns:
Объект возвращается только в том случае, если объект найден и время жизни объекта не закончилось и не превышено время бездействия.
Throws:
CacheException - если возникли проблемы
java.lang.NullPointerException - если objId==null

remove

public void remove(java.lang.Object objId)
            throws CacheException
Удаляет объект из кеша.

Specified by:
remove in interface Cache
Parameters:
objId - идентификатор объекта
Throws:
CacheException - Если перед вызовом remove() был вызван метод get() и он вернул null то при вызове remove() возникнет CacheException.
java.lang.NullPointerException - если objId==null

size

public int size()
Возвращает количество объектов в кеше

Specified by:
size in interface Cache

clear

public void clear()
           throws CacheException
Удаляет все объекты из кеша

Specified by:
clear in interface Cache
Throws:
CacheException - если перед вызовом clear() был вызван метод get() и он вернул null то при вызове clear() может возникнуть CacheException.

getCacheInfo

public CacheInfo getCacheInfo()
Возвращает информацию о кеше

Specified by:
getCacheInfo in interface Cache

getCacheConfig

public CacheConfig getCacheConfig()
Возвращает конфигруцию кеша

Specified by:
getCacheConfig in interface Cache

setCacheConfig

public void setCacheConfig(CacheConfig config)
                    throws CacheException
Устанавливает конфигурацию кеша. При установке конфигурации все объекты кеша теряются.

Specified by:
setCacheConfig in interface ManagedCache
Parameters:
config - конфигурация
Throws:
CacheException - если возникли проблемы
java.lang.NullPointerException - если config==null

clean

public void clean()
           throws CacheException
Выполняет очистку кеша. Удаляются объекты у которых закончилось время жизни или превышен период ожидания или если объект равен null.

Specified by:
clean in interface ManagedCache
Throws:
CacheException - если перед вызовом clean() был вызван метод get() и он вернул null то при вызове clean() может возникнуть CacheException.

cache4j v0.4 API

Copyright (c) 2006, Yuriy Stepovoy. All rights reserved. email: stepovoy@gmail.com