-
- private static final DecimalFormat decimalFormat;
-
- private final AtomicLong totalDurations = new AtomicLong();
- private final AtomicLong longestDuration = new AtomicLong();
- private volatile long timeOfLongestDuration;
- private final AtomicLong shortestDuration = new AtomicLong(Long.MAX_VALUE);
- private volatile long timeOfShortestDuration;
- private final AtomicDouble averageDuration = new AtomicDouble();
+ private static final AtomicReferenceFieldUpdater<DurationStatsTracker, DurationWithTime> LONGEST_UPDATER =
+ AtomicReferenceFieldUpdater.newUpdater(DurationStatsTracker.class, DurationWithTime.class, "longest");
+ private static final AtomicReferenceFieldUpdater<DurationStatsTracker, DurationWithTime> SHORTEST_UPDATER =
+ AtomicReferenceFieldUpdater.newUpdater(DurationStatsTracker.class, DurationWithTime.class, "shortest");
+ private static final AtomicLongFieldUpdater<DurationStatsTracker> COUNT_UPDATER =
+ AtomicLongFieldUpdater.newUpdater(DurationStatsTracker.class, "count");
+ private static final AtomicLongFieldUpdater<DurationStatsTracker> SUM_UPDATER =
+ AtomicLongFieldUpdater.newUpdater(DurationStatsTracker.class, "sum");
+
+ private static final Logger LOG = LoggerFactory.getLogger(DurationStatsTracker.class);
+ private static final DecimalFormat DECIMAL_FORMAT;
+
+ private volatile long sum = 0;
+ private volatile long count = 0;
+ private volatile DurationWithTime longest = null;
+ private volatile DurationWithTime shortest = null;