KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > shiftone > cache > util > reaper > ReaperTask


1 package org.shiftone.cache.util.reaper;
2
3
4
5 import org.shiftone.cache.util.Log;
6
7 import java.lang.ref.SoftReference JavaDoc;
8 import java.util.TimerTask JavaDoc;
9
10
11 /**
12  * Class ReaperTask
13  *
14  *
15  * @author <a HREF="mailto:jeff@shiftone.org">Jeff Drost</a>
16  * @version $Revision: 1.2 $
17  */

18 public class ReaperTask extends TimerTask JavaDoc
19 {
20
21     private static final Log LOG = new Log(ReaperTask.class);
22     private static long instanceCounter = 0;
23     private static final long instanceNumber = (instanceCounter++);
24     private SoftReference JavaDoc reference = null;
25     private String JavaDoc toString;
26
27     public ReaperTask(ReapableCache cache)
28     {
29         this.toString = cache.toString();
30         this.reference = new SoftReference JavaDoc(cache);
31     }
32
33
34     public void run()
35     {
36
37         ReapableCache reapableCache = (ReapableCache) reference.get();
38         String JavaDoc threadName = Thread.currentThread().getName();
39
40         Thread.currentThread().setName("REAPER for " + instanceNumber);
41         LOG.debug("run");
42
43         if (reapableCache == null)
44         {
45             LOG.info("cache reaper quitting for : " + toString + " #" + instanceNumber);
46             cancel();
47         }
48         else
49         {
50             reapableCache.removeExpiredElements();
51         }
52
53         Thread.currentThread().setName(threadName);
54     }
55 }
56
Popular Tags