/** * Returns the number of occurrences per second. * * @return throughput in occurrences per second */ public synchronized double throughput() { return total / duration(); }
@Override public <T> Future<T> submit(Callable<T> task) { Counter taskCounter = new Counter(); taskCounter.reset(); return executor.submit(() -> { T t = null; long queueWaitTime = (long) taskCounter.duration(); Class className; if (task instanceof CallableExtended) { className = ((CallableExtended) task).getRunnable().getClass(); } else { className = task.getClass(); } if (queueMetrics != null) { queueMetrics.update(queueWaitTime, TimeUnit.SECONDS); } taskCounter.reset(); try { t = task.call(); } catch (Exception e) { getLogger(className).error("Uncaught exception on " + className, e); } long taskwaittime = (long) taskCounter.duration(); if (delayMetrics != null) { delayMetrics.update(taskwaittime, TimeUnit.SECONDS); } return t; }); }