package com.bigdata.util.concurrent; import java.util.concurrent.BlockingQueue; import java.util.concurrent.Callable; /** * Class tracks the moving average of the queue size. * * @author <a href="mailto:thompsonbry@users.sourceforge.net">Bryan Thompson</a> * @version $Id$ */ public class QueueSizeMovingAverageTask extends MovingAverageTask implements Runnable { /** * The size of the queue (moving average). * * @see IQueueCounters#AverageQueueSize */ public double getAverageQueueSize() { return getMovingAverage(); } /** * * @param name * The label for the service. * @param queue * The queue to be monitored. */ public QueueSizeMovingAverageTask(String name, BlockingQueue<?> queue) { this(name, queue, DEFAULT_WEIGHT); } /** * Core impl. * * @param name * The label for the service. * @param queue * The queue to be monitored. * @param w * The weight to be used by * {@link #getMovingAverage(double, double, double)} */ public QueueSizeMovingAverageTask(final String name, final BlockingQueue<?> queue, final double w) { super(name, new Callable<Integer>() { public Integer call() { return queue.size(); } }, w); } }