class ScheduledEvictionListener extends QueuingEvictionListener<K, V> {

  protected void init(final long period, final int queueSize) {
    cacheTasks = new ArrayBlockingQueue<>(queueSize);
    final ScheduledExecutorService drainerService = Executors.newSingleThreadScheduledExecutor(
        runnable -> ThreadUtils
            .createDaemonThread(runnable, "imcache:batchAsyncEvictionDrainer(thread="
                + NO_OF_EVICTION_DRAINERS.incrementAndGet() + ")"));
    drainerService.scheduleAtFixedRate(new Runnable() {
      public void run() {
        drainQueue();
      }
    }, period, period, TimeUnit.MILLISECONDS);
  }

  public  ScheduledEvictionListener();
  public  ScheduledEvictionListener(final int batchSize, final long period, final int queueSize);

}