/*
 * Copyright (C) 2011 The Guava Authors
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */

package com.google.common.base;

import com.google.common.annotations.Beta;
import com.google.common.annotations.GwtCompatible;
import com.google.errorprone.annotations.CanIgnoreReturnValue;

A time source; returns a time value representing the number of nanoseconds elapsed since some fixed but arbitrary point in time. Note that most users should use Stopwatch instead of interacting with this class directly.

Warning: this interface can only be used to measure elapsed time, not wall time.

Author:Kevin Bourrillion
Since:10.0 (mostly source-compatible since 9.0)
/** * A time source; returns a time value representing the number of nanoseconds elapsed since some * fixed but arbitrary point in time. Note that most users should use {@link Stopwatch} instead of * interacting with this class directly. * * <p><b>Warning:</b> this interface can only be used to measure elapsed time, not wall time. * * @author Kevin Bourrillion * @since 10.0 (<a href="https://github.com/google/guava/wiki/Compatibility">mostly * source-compatible</a> since 9.0) */
@Beta @GwtCompatible public abstract class Ticker {
Constructor for use by subclasses.
/** Constructor for use by subclasses. */
protected Ticker() {}
Returns the number of nanoseconds elapsed since this ticker's fixed point of reference.
/** Returns the number of nanoseconds elapsed since this ticker's fixed point of reference. */
@CanIgnoreReturnValue // TODO(kak): Consider removing this public abstract long read();
A ticker that reads the current time using System.nanoTime.
Since:10.0
/** * A ticker that reads the current time using {@link System#nanoTime}. * * @since 10.0 */
public static Ticker systemTicker() { return SYSTEM_TICKER; } private static final Ticker SYSTEM_TICKER = new Ticker() { @Override public long read() { return Platform.systemNanoTime(); } }; }