I'll take a look at that. I have his book too...
-Nissim
> -----Original Message-----
> From: Mark Pollack [mailto:[EMAIL PROTECTED]]
> Sent: Wednesday, August 09, 2000 9:36 AM
> To: Turbine
> Subject: RE: Refreshable Cache
>
>
> Hi,
>
> Just my 2cents...what you have below is probably good
> enough...If you need
> to get around limitations of fully synchronzied methods and blocks (no
> read/write policy, can't acquire/release locks from different
> methods,...)
> then lock utilities are the way to go but at the cost of a
> more complicated
> coding style. As for great Mutex primitives etc, I don't
> think you can
> beat Doug Lea's util.concurrent package. There are also
> implementations of
> a "SyncMap" where you can specify the type of lock you want
> to have on the
> collection. He has placed this code in the public domain...
>
> " Originally written by Doug Lea and released into the public domain.
> This may be used for any purposes whatsoever without acknowledgment.
> Thanks for the assistance and support of Sun Microsystems Labs,
> and everyone contributing, testing, and using this code."
>
> http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/conc
> urrent/intro.h
> tml
>
>
> Regards,
> Mark
>
>
>
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED]]On Behalf Of
> [EMAIL PROTECTED]
> Sent: Wednesday, August 09, 2000 3:06 PM
> To: Turbine
> Subject: Re: Refreshable Cache
>
>
> "Paul O'Leary" <[EMAIL PROTECTED]> writes:
>
> >
> > I'll see if I can scare up a/o write some better synchronization
> primitives.
> >
>
> Why not just the standard pattern for this ? What I usually use is
> the pattern in the getCache() method in the code appended.
>
> Regards,
>
> Gunnar
>
> /**
> * The cache manager class acts as central registry for all
> * object caches and can be used to expire/clean specific caches.
> */
> public class CacheManager {
> protected static Hashtable caches = new Hashtable();
>
> /**
> * Get a cache with the given name. This method will return
> * a cache with the given name if it exists or create if
> doesn't already
> * exist.
> * @param name The unique name of the cache.
> * @return Returns a cache with the given name.
> */
> public static Cache getCache(String name){
> Cache cache = (Cache) caches.get(name);
>
> // Use the guard pattern to guard against concurrent threads
> // trying to create a new cache at the same time. The code
> // below ensures us that there will be only one Cache
> object with a
> // given name.
> if(cache == null){
> synchronized(caches){
> cache = (Cache) caches.get(name);
> if(cache == null){
> cache = new Cache();
> caches.put(name, cache);
> }
> }
> }
> return cache;
> }
>
> }
>
>
>
> ------------------------------------------------------------
> To subscribe: [EMAIL PROTECTED]
> To unsubscribe: [EMAIL PROTECTED]
> Search: <http://www.mail-archive.com/turbine%40list.working-dogs.com/>
> Problems?: [EMAIL PROTECTED]
>
>
>
>
> ------------------------------------------------------------
> To subscribe: [EMAIL PROTECTED]
> To unsubscribe: [EMAIL PROTECTED]
> Search: <http://www.mail-archive.com/turbine%40list.working-dogs.com/>
> Problems?: [EMAIL PROTECTED]
>
------------------------------------------------------------
To subscribe: [EMAIL PROTECTED]
To unsubscribe: [EMAIL PROTECTED]
Search: <http://www.mail-archive.com/turbine%40list.working-dogs.com/>
Problems?: [EMAIL PROTECTED]