private synchronized void reportStatsForPeriod() {
    //RC: this method should be called from myExecutor (single) thread only, hence synchronization here
    //    is only to be sure

    intervalWaitingTimes = waitingTimesHistogram.getIntervalHistogram(intervalWaitingTimes);
    intervalQueueSizes = queueSizesHistogram.getIntervalHistogram(intervalQueueSizes);
    intervalExecutionTimes = executionTimeHistogram.getIntervalHistogram(intervalExecutionTimes);
    intervalAWTDispatchTimes = awtEventDispatchTimeHistogram.getIntervalHistogram(intervalAWTDispatchTimes);

    tasksExecutedCounter.record(intervalWaitingTimes.getTotalCount());

    waitingTimeAvgNs.record(intervalWaitingTimes.getMean());
    waitingTime90PNs.record(intervalWaitingTimes.getValueAtPercentile(90));
    waitingTimeMaxNs.record(intervalWaitingTimes.getMaxValue());

    queueSizeAvg.record(intervalQueueSizes.getMean());
    queueSize90P.record(intervalQueueSizes.getValueAtPercentile(90));
    queueSizeMax.record(intervalQueueSizes.getMaxValue());

    executionTimeAvgNs.record(intervalExecutionTimes.getMean());
    executionTime90PNs.record(intervalExecutionTimes.getValueAtPercentile(90));
    executionTimeMaxNs.record(intervalExecutionTimes.getMaxValue());


    awtEventsDispatchedCounter.record(intervalAWTDispatchTimes.getTotalCount());

    awtDispatchTimeAvgNs.record(intervalAWTDispatchTimes.getMean());
    awtDispatchTime90PNs.record(intervalAWTDispatchTimes.getValueAtPercentile(90));
    awtDispatchTimeMaxNs.record(intervalAWTDispatchTimes.getMaxValue());
  }
private synchronized void reportStatsForPeriod()