com.atlassian.util.concurrent
Class Timeout

java.lang.Object
  extended by com.atlassian.util.concurrent.Timeout

@Immutable
public final class Timeout
extends java.lang.Object

Automatically calculates elapsed time from when it is created. Useful when successively calling blocking methods and a time since call time needs to be worked out.

Usage:

 Timeout timeout = Timeout.getNanosTimeout(1, TimeUnit.SECONDS);
 String str = futureString.get(timeout.getTime(), timeout.getUnit());
 Integer num = futureInt.get(timeout.getTime(), timeout.getUnit());
 
where if the first call takes quarter of a second, the second call is passed the equivalent of three-quarters of a second.


Method Summary
static Timeout getMillisTimeout(long time, java.util.concurrent.TimeUnit unit)
          Get a Timeout that uses nanosecond precision.
static Timeout getNanosTimeout(long time, java.util.concurrent.TimeUnit unit)
          Get a Timeout that uses nanosecond precision.
 long getTime()
           
 java.util.concurrent.TimeUnit getUnit()
           
 boolean isExpired()
          Has this timeout expired
 void throwTimeoutException()
          Always throws a TimeoutException.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getNanosTimeout

public static Timeout getNanosTimeout(long time,
                                      java.util.concurrent.TimeUnit unit)
Get a Timeout that uses nanosecond precision. The accuracy will depend on the accuracy of System.nanoTime().

Parameters:
time - the maximum time to wait for the lock
unit - the time unit of the time argument.
Returns:
timeout with TimeUnit.NANOSECONDS precision.

getMillisTimeout

public static Timeout getMillisTimeout(long time,
                                       java.util.concurrent.TimeUnit unit)
Get a Timeout that uses nanosecond precision. The accuracy will depend on the accuracy of System.nanoTime().

Parameters:
time - the maximum time to wait for the lock
unit - the time unit of the time argument.
Returns:
timeout with TimeUnit.NANOSECONDS precision.

getTime

public long getTime()

getUnit

public java.util.concurrent.TimeUnit getUnit()

isExpired

public boolean isExpired()
Has this timeout expired

Returns:
true if expired

throwTimeoutException

public void throwTimeoutException()
                           throws TimedOutException
Always throws a TimeoutException.

Throws:
TimedOutException, - always.
TimedOutException


Copyright © 2011 Atlassian. All Rights Reserved.