Class CachedClock

java.lang.Object
org.apache.logging.log4j.core.util.CachedClock
All Implemented Interfaces:
Clock

public final class CachedClock extends Object implements Clock
Implementation of the Clock interface that tracks the time in a private long field that is updated by a background thread once every millisecond. Timers on most platforms do not have millisecond granularity, so the returned value may "jump" every 10 or 16 milliseconds. To reduce this problem, this class also updates the internal time value every 1024 calls to currentTimeMillis().
  • Field Details

    • UPDATE_THRESHOLD

      private static final int UPDATE_THRESHOLD
      See Also:
    • instance

      private static volatile CachedClock instance
    • INSTANCE_LOCK

      private static final Object INSTANCE_LOCK
    • millis

      private volatile long millis
    • count

      private short count
  • Constructor Details

    • CachedClock

      private CachedClock()
  • Method Details

    • instance

      public static CachedClock instance()
    • currentTimeMillis

      public long currentTimeMillis()
      Returns the value of a private long field that is updated by a background thread once every millisecond. Timers on most platforms do not have millisecond granularity, the returned value may "jump" every 10 or 16 milliseconds. To reduce this problem, this method also updates the internal time value every 1024 calls.
      Specified by:
      currentTimeMillis in interface Clock
      Returns:
      the cached time