if (debug > 3) { System.out.println("JmDNS reaping cache"); }
logger.finest("run() JmDNS reaping cache");
        public void run() {            synchronized (JmDNS.this) {                if (state == DNSState.CANCELED) {                    return;                }                if (debug > 3) {                    System.out.println("JmDNS reaping cache");                }                // Remove expired answers from the cache                // -------------------------------------                // To prevent race conditions, we defensively copy all cache                // entries into a list.                LinkedList list = new LinkedList();                synchronized (cache) {                    for (Iterator i = cache.all() ; i.hasNext() ;) {                        for (DNSCache.CacheNode n = (DNSCache.CacheNode) i.next(); n != null; n = n.next()) {                            list.add(n.getValue());                        }                    }                }                // Now, we remove them.                long now = System.currentTimeMillis();                for (Iterator i = list.iterator() ; i.hasNext() ; ) {                    DNSRecord c = (DNSRecord) i.next();                    if (c.isExpired(now)) {                        updateRecord(now, c);                        cache.remove(c);                    }                }            }        }