org.linkedin.util-core/src/main/java/org/linkedin/util/concurrent/ConcurrentUtils.java
public static void joinFor(Clock clock, Thread thread, Object timeout)
    throws InterruptedException, TimeoutException
  {
    joinUntil(clock, thread, ClockUtils.toEndTime(timeout));
  }
public static void joinFor(Clock clock, Thread thread, Object timeout)
    throws InterruptedException, TimeoutException
  {
    joinUntil(clock, thread, ClockUtils.toEndTime(timeout));
  }
Joins on the thread but if end time is expired then throws an exception.

@param thread the thread to join on
@param timeout how long to join for (<code>null</code> or <= 0 means forever)
@throws InterruptedException if the thread is interrupted while waiting
@throws TimeoutException if the time has been reached