startTimer(UPDATE_INTERVAL);
resetTimer(UPDATE_INTERVAL);
  private void update(boolean publish) {    long now = System.currentTimeMillis();    long elapsed = now - then;    if (elapsed < 1) elapsed = 1;    then = now;    publishRateCondition.updateRate(tasksSubscription.getAddedCollection().size(), elapsed);    disposeRateCondition.updateRate(peSubscription.getAddedCollection().size(), elapsed);    backlogCondition.update(tasksSubscription.size() - peSubscription.size(), elapsed);    if (publish) {      cancelTimer();      if (logger.isDebugEnabled()){        logger.debug(publishRateCondition.toString());        logger.debug(disposeRateCondition.toString());        logger.debug(backlogCondition.toString());      }      publishRateCondition.publish();      disposeRateCondition.publish();      backlogCondition.publish();      startTimer(UPDATE_INTERVAL);    }  }