void () { if (timeoutFlushFuture != null && !timeoutFlushFuture.isDone()) return; Runnable command = () -> { cancelFlushTask(throttlingFlushFuture); flushBuffer(true); contributorsMap.keySet().forEach(c -> contributorsMap.put(c, true)); }; timeoutFlushFuture = executorService.schedule(command, waitTimeoutMs, TimeUnit.MILLISECONDS); }