code: protected synchronized String getTimeAsString(long tolerance) {
          updateTime(tolerance);
          // see if we need the delayed string creation at this point
          if (null == this.sTime) {
              this.sTime = this.myBuffer.toString();
          }
          return this.sTime;
      }
docs: Get a formatted version of the time as a String. The input range is
  the allowed difference in time from the cached snapshot that the
  caller is willing to use. If that range is exceeded, then a new
  snapshot is taken and formatted.
  <br>
  
  @param tolerance -- milliseconds, -1 means use default 1000ms, a 0
  means that this must be an exact match in time
  @return String