Class MonitoredCallable<V>

  • Type Parameters:
    V - the result type of method call
    All Implemented Interfaces:
    Callable<V>

    public class MonitoredCallable<V>
    extends TimingSessionContainer
    implements Callable<V>

    A Callable wrapper that maintains one or more counters for monitoring the time spent by the Callable's call() method.

    Specify a target Callable via constructor, then execute the call() method available in this wrapper. The target Callable's call() method will be executed and monitored.

    After the operation, call printSummary() or printDetails() to print the elapsed times or elapsedTime(Counter.Type), to retrieve the elapsed time duration for a particular counter. E.g.:

     Duration cpuTime = monitoredRunnable.elapsedTime(Counter.Type.CPU_TIME);
     

    By default, all available counter types will be measured, if no specific counter types are passed to the constructor. If required, an additional constructor may be used to set up one or more specific counters to be maintained. E.g.:

     new MonitoredCallable(callable); // maintains all available counter types
     new MonitoredCallable(callable, Counter.Type.WALL_CLOCK_TIME); // wall-clock time only
     

    For a list of available counters, refer to Counter.Type.

    Note: This class is not thread-safe. In a multi-thread context, different instances must be created for each thread.

    Author:
    oswaldo.bapvic.jr
    See Also:
    Counter, Counter.Type
    • Constructor Detail

      • MonitoredCallable

        public MonitoredCallable​(Callable<V> callable)
        Builds this monitored operation with a given Callable. All available counter types will be maintained.
        Parameters:
        callable - the Callable to be executed
      • MonitoredCallable

        public MonitoredCallable​(Callable<V> callable,
                                 Counter.Type... types)
        Builds this monitored operation with a given Callable and one or more specific counter types to be maintained.

        If no type is specified, then all of the available types will be maintained.

        Parameters:
        callable - the Callable to be executed
        types - the counter types to be maintained with the operation