Class SystemTime

java.lang.Object
com.biglybt.core.util.SystemTime

public class SystemTime extends Object
Utility class to retrieve current system time, and catch clock backward time changes.
  • Field Details

    • TIME_GRANULARITY_MILLIS

      public static final long TIME_GRANULARITY_MILLIS
      See Also:
    • STEPS_PER_SECOND

      private static final int STEPS_PER_SECOND
      See Also:
    • instance

      private static final SystemTime.SystemTimeProvider instance
    • SOD_IT_LETS_USE_HPC

      private static final boolean SOD_IT_LETS_USE_HPC
      See Also:
    • systemTimeConsumers

      private static volatile List<SystemTime.TickConsumer> systemTimeConsumers
    • monotoneTimeConsumers

      private static volatile List<SystemTime.TickConsumer> monotoneTimeConsumers
    • clock_change_list

      private static volatile List<SystemTime.ChangeListener> clock_change_list
    • last_time

      private static long last_time
      Attempts to return unique values by incrementing millis if current same as previous... Obviously this doesn't guarantee uniqueness if the clock changes...
    • last_unique_time

      private static long last_unique_time
  • Constructor Details

    • SystemTime

      public SystemTime()
  • Method Details

    • getCurrentTime

      public static long getCurrentTime()
      Note that this can this time can jump into the future or past due to clock adjustments use getMonotonousTime() if you need steady increases
      Returns:
      current system time in millisecond since epoch
    • getCurrentTimeUnique

      public static long getCurrentTimeUnique()
    • getMonotonousTime

      public static long getMonotonousTime()
      Time that is guaranteed to grow monotonously and also ignores larger jumps into the future which might be caused by adjusting the system clock

      Do not mix times retrieved by this method with normal time!
      Returns:
      the amount of real time passed since the program start in milliseconds
    • getSteppedMonotonousTime

      public static long getSteppedMonotonousTime()
      Like getMonotonousTime but only updated at TIME_GRANULARITY_MILLIS intervals (not interpolated) As such it is likely to be cheaper to obtain
      Returns:
    • getOffsetTime

      public static long getOffsetTime(long offsetMS)
    • registerConsumer

      public static void registerConsumer(SystemTime.TickConsumer c)
    • unregisterConsumer

      public static void unregisterConsumer(SystemTime.TickConsumer c)
    • registerMonotonousConsumer

      public static void registerMonotonousConsumer(SystemTime.TickConsumer c)
    • unregisterMonotonousConsumer

      public static void unregisterMonotonousConsumer(SystemTime.TickConsumer c)
    • registerClockChangeListener

      public static void registerClockChangeListener(SystemTime.ChangeListener c)
    • unregisterClockChangeListener

      public static void unregisterClockChangeListener(SystemTime.ChangeListener c)
    • getHighPrecisionCounter

      public static long getHighPrecisionCounter()
    • main

      public static void main(String[] args)