Interface LongTaskTimer

  • All Superinterfaces:
    Meter
    All Known Implementing Classes:
    DefaultLongTaskTimer, NoopLongTaskTimer

    public interface LongTaskTimer
    extends Meter
    A long task timer is used to track the total duration of all in-flight long-running tasks and the number of such tasks.
    • Method Detail

      • builder

        static LongTaskTimer.Builder builder​(Timed timed)
        Create a timer builder from a Timed annotation.
        Parameters:
        timed - The annotation instance to base a new timer on.
        Returns:
        This builder.
      • recordCallable

        default <T> T recordCallable​(java.util.concurrent.Callable<T> f)
                              throws java.lang.Exception
        Executes the callable f and records the time taken.
        Type Parameters:
        T - The return type of the Callable.
        Parameters:
        f - Function to execute and measure the execution time.
        Returns:
        The return value of f.
        Throws:
        java.lang.Exception - Any exception bubbling up from the callable.
      • record

        default <T> T record​(java.util.function.Supplier<T> f)
        Executes the callable f and records the time taken.
        Type Parameters:
        T - The return type of the Supplier.
        Parameters:
        f - Function to execute and measure the execution time.
        Returns:
        The return value of f.
      • record

        default void record​(java.util.function.Consumer<LongTaskTimer.Sample> f)
        Executes the runnable f and records the time taken.
        Parameters:
        f - Function to execute and measure the execution time with a reference to the timer id useful for looking up current duration.
      • record

        default void record​(java.lang.Runnable f)
        Executes the runnable f and records the time taken.
        Parameters:
        f - Function to execute and measure the execution time.
      • start

        LongTaskTimer.Sample start()
        Start keeping time for a task.
        Returns:
        A task id that can be used to look up how long the task has been running.
      • stop

        long stop​(long task)
        Mark a given task as completed.
        Parameters:
        task - Id for the task to stop. This should be the value returned from start().
        Returns:
        Duration for the task in nanoseconds. A -1 value will be returned for an unknown task.
      • duration

        double duration​(long task,
                        java.util.concurrent.TimeUnit unit)
        The current duration for an active task.
        Parameters:
        task - Id for the task to stop. This should be the value returned from start().
        unit - The time unit to scale the duration to.
        Returns:
        Duration for the task. A -1 value will be returned for an unknown task.
      • duration

        double duration​(java.util.concurrent.TimeUnit unit)
        Parameters:
        unit - The time unit to scale the duration to.
        Returns:
        The cumulative duration of all current tasks.
      • activeTasks

        int activeTasks()
        Returns:
        The current number of tasks being executed.
      • measure

        default java.lang.Iterable<Measurement> measure()
        Description copied from interface: Meter
        Get a set of measurements. Should always return the same number of measurements and in the same order, regardless of the level of activity or the lack thereof.
        Specified by:
        measure in interface Meter
        Returns:
        The set of measurements that represents the instantaneous value of this meter.