}
        monitors = new ConcurrentHashMap();
        if (scheduler == null)
        {
            this.scheduler = new ScheduledThreadPoolExecutor(1);
            scheduler.setThreadFactory(new DaemonThreadFactory(name + ".expiry.monitor", contextClassLoader));
            scheduler.scheduleWithFixedDelay(this, 0, monitorFrequency,
                                             TimeUnit.MILLISECONDS);
        }
    }