@Override protected Timer newTimer(Id id) { return new StatelessTimer(id, clock(), meterTTL); }
@Override public Iterable<Measurement> measure() { if (count.get() == 0) { return Collections.emptyList(); } else { List<Measurement> ms = new ArrayList<>(4); ms.add(newMeasurement(stats[0], count::getAndSet)); ms.add(newMeasurement(stats[1], totalTime::getAndSet)); ms.add(newMeasurement(stats[2], totalOfSquares::getAndSet)); ms.add(newMeasurement(stats[3], max::getAndSet)); return ms; } }
@Override public void record(Runnable f) { final long start = clock.monotonicTime(); try { f.run(); } finally { record(clock.monotonicTime() - start, TimeUnit.NANOSECONDS); } }
@Override public void record(long amount, TimeUnit unit) { final double seconds = unit.toNanos(amount) / 1e9; if (seconds >= 0.0) { count.incrementAndGet(); totalTime.addAndGet(seconds); totalOfSquares.addAndGet(seconds * seconds); max.max(seconds); updateLastModTime(); } }
@Override public <T> T record(Callable<T> f) throws Exception { final long start = clock.monotonicTime(); try { return f.call(); } finally { record(clock.monotonicTime() - start, TimeUnit.NANOSECONDS); } }
@Override public void record(long amount, TimeUnit unit) { final double seconds = unit.toNanos(amount) / 1e9; if (seconds >= 0.0) { count.incrementAndGet(); totalTime.addAndGet(seconds); totalOfSquares.addAndGet(seconds * seconds); max.max(seconds); updateLastModTime(); } }
@Override public <T> T record(Callable<T> f) throws Exception { final long start = clock.monotonicTime(); try { return f.call(); } finally { record(clock.monotonicTime() - start, TimeUnit.NANOSECONDS); } }
@Override public Iterable<Measurement> measure() { if (count.get() == 0) { return Collections.emptyList(); } else { List<Measurement> ms = new ArrayList<>(4); ms.add(newMeasurement(stats[0], count::getAndSet)); ms.add(newMeasurement(stats[1], totalTime::getAndSet)); ms.add(newMeasurement(stats[2], totalOfSquares::getAndSet)); ms.add(newMeasurement(stats[3], max::getAndSet)); return ms; } }
@Override protected Timer newTimer(Id id) { return new StatelessTimer(id, clock(), meterTTL); }
@Override public void record(Runnable f) { final long start = clock.monotonicTime(); try { f.run(); } finally { record(clock.monotonicTime() - start, TimeUnit.NANOSECONDS); } }