/** * Obtain a {@link Timer} that uses the given clock to indicate that a pre-defined time period expired. * * @param clock the clock; may not be null * @param time a time interval to expire * @return the {@link Timer} object; never null */ public static Timer timer(Clock clock, Duration time) { final TimeSince start = timeSince(clock); start.reset(); return new Timer() { @Override public boolean expired() { return start.elapsedTime() > time.toMillis(); } @Override public Duration remaining() { return time.minus(start.elapsedTime(), ChronoUnit.MILLIS); } }; }
TimeSince timeSinceLastRecord = Threads.timeSince(Clock.SYSTEM);
/** * Obtain a {@link Timer} that uses the given clock to indicate that a pre-defined time period expired. * * @param clock the clock; may not be null * @param time a time interval to expire * @return the {@link Timer} object; never null */ public static Timer timer(Clock clock, Duration time) { final TimeSince start = timeSince(clock); start.reset(); return new Timer() { @Override public boolean expired() { return start.elapsedTime() > time.toMillis(); } @Override public Duration remaining() { return time.minus(start.elapsedTime(), ChronoUnit.MILLIS); } }; }
TimeSince timeSinceLastRecord = Threads.timeSince(Clock.SYSTEM);