code: public boolean tryAcquire(int permits, long timeout, TimeUnit unit) {
      long timeoutMicros = unit.toMicros(timeout);
      checkPermits(permits);
      long microsToWait;
      long nowMicros = readSafeMicros();
      if (nextFreeTicketMicros > nowMicros + timeoutMicros) {
        return false;
      } else {
        microsToWait = reserveNextTicket(permits, nowMicros);
      }
      ticker.sleepMicrosUninterruptibly(microsToWait);
      return true;
    }
docs: Acquires the given number of permits from this {@code UnsynchronizedRateLimiter} if it can be obtained
  without exceeding the specified {@code timeout}, or returns {@code false}
  immediately (without waiting) if the permits would not have been granted
  before the timeout expired.
  
  @param permits the number of permits to acquire
  @param timeout the maximum time to wait for the permits
  @param unit the time unit of the timeout argument
  @return {@code true} if the permits were acquired, {@code false} otherwise