code: @Override
      public Object get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {
  
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
  
          if (isTraceOn && tc.isEntryEnabled()) {
              String completeTime = "Timeout setting: " + timeout + " " + unit;
              Tr.entry(tc, "get - " + completeTime + " Future object: " + this);
          }
  
          if (unit == null) { // F16043
              if (isTraceOn && tc.isEntryEnabled())
                  Tr.exit(tc, "get - null unit");
              throw new NullPointerException("unit");
          }
  
          long startTime = System.nanoTime();
  
          if (!await(timeout, unit)) { // F16043
              if (isTraceOn && tc.isEntryEnabled())
                  Tr.exit(tc, "get - asynchronous method timed out, throwing TimeoutException.");
              throw new TimeoutException();
          }
  
          long remainingTime = timeout - unit.convert(System.nanoTime() - startTime, TimeUnit.NANOSECONDS);
  
          Object resultToReturn = getResult(remainingTime, unit); // d650178
  
          if (isTraceOn && tc.isEntryEnabled()) {
              Tr.exit(tc, "get: " + Util.identity(resultToReturn));
          }
          return (resultToReturn);
      }
docs: This get method returns the result of the async method call if it is
  available. Otherwise, it blocks until the result is available, or the
  timeout expires. It is unblocked when the Work object that runs the async
  method on a work manager finishes and sets results on this instance, or
  when the timeout expires.<p>
  
  @param timeout - the timeout value
  @param unit - the time unit for the timeout value (e.g. milliseconds, seconds, etc.)
  
  @return - the result object
  
  @throws InterruptedException - if the thread is interrupted while waiting
  @throws CancellationException - if the async method was canceled successfully
  @throws ExecutionException - if the async method ended with an exception
  @throws TimeoutException - if the timeout period expires before the async method completes