1 package org.shiftone.cache.util.reaper; 2 3 4 5 import org.shiftone.cache.util.Log; 6 7 import java.lang.ref.SoftReference ; 8 import java.util.TimerTask ; 9 10 11 18 public class ReaperTask extends TimerTask 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 reference = null; 25 private String toString; 26 27 public ReaperTask(ReapableCache cache) 28 { 29 this.toString = cache.toString(); 30 this.reference = new SoftReference (cache); 31 } 32 33 34 public void run() 35 { 36 37 ReapableCache reapableCache = (ReapableCache) reference.get(); 38 String 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 |