edu.emory.mathcs.backport.java.util.concurrent

Class TimeUnit

Implemented Interfaces:
java.io.Serializable

public abstract class TimeUnit
extends java.lang.Object
implements java.io.Serializable

A TimeUnit represents time durations at a given unit of granularity and provides utility methods to convert across units, and to perform timing and delay operations in these units. A TimeUnit does not maintain time information, but only helps organize and use time representations that may be maintained separately across various contexts. A nanosecond is defined as one thousandth of a microsecond, a microsecond as one thousandth of a millisecond, a millisecond as one thousandth of a second, a minute as sixty seconds, an hour as sixty minutes, and a day as twenty four hours.

A TimeUnit is mainly used to inform time-based methods how a given timing parameter should be interpreted. For example, the following code will timeout in 50 milliseconds if the lock is not available:

  Lock lock = ...;
  if ( lock.tryLock(50L, TimeUnit.MILLISECONDS) ) ...
 
while this code will timeout in 50 seconds:
  Lock lock = ...;
  if ( lock.tryLock(50L, TimeUnit.SECONDS) ) ...
 
Note however, that there is no guarantee that a particular timeout implementation will be able to notice the passage of time at the same granularity as the given TimeUnit.
Author:
Doug Lea
Since:
1.5
See Also:
Serialized Form

Field Summary

static TimeUnit
DAYS
static TimeUnit
HOURS
static TimeUnit
MICROSECONDS
static TimeUnit
MILLISECONDS
static TimeUnit
MINUTES
static TimeUnit
NANOSECONDS
static TimeUnit
SECONDS

Method Summary

abstract long
convert(long sourceDuration, TimeUnit sourceUnit)
Convert the given time duration in the given unit to this unit.
void
sleep(long timeout)
Performs a Thread.sleep using this unit.
void
timedJoin(Thread thread, long timeout)
Performs a timed Thread.join using this time unit.
void
timedWait(Object obj, long timeout)
Performs a timed Object.wait using this time unit.
abstract long
toDays(long duration)
Equivalent to DAYS.convert(duration, this).
abstract long
toHours(long duration)
Equivalent to HOURS.convert(duration, this).
abstract long
toMicros(long duration)
Equivalent to MICROSECONDS.convert(duration, this).
abstract long
toMillis(long duration)
Equivalent to MILLISECONDS.convert(duration, this).
abstract long
toMinutes(long duration)
Equivalent to MINUTES.convert(duration, this).
abstract long
toNanos(long duration)
Equivalent to NANOSECONDS.convert(duration, this).
abstract long
toSeconds(long duration)
Equivalent to SECONDS.convert(duration, this).
String
toString()
static TimeUnit[]
values()

Field Details

DAYS

public static final TimeUnit DAYS

HOURS

public static final TimeUnit HOURS

MICROSECONDS

public static final TimeUnit MICROSECONDS

MILLISECONDS

public static final TimeUnit MILLISECONDS

MINUTES

public static final TimeUnit MINUTES

NANOSECONDS

public static final TimeUnit NANOSECONDS

SECONDS

public static final TimeUnit SECONDS

Method Details

convert

public abstract long convert(long sourceDuration,
                             TimeUnit sourceUnit)
Convert the given time duration in the given unit to this unit. Conversions from finer to coarser granularities truncate, so lose precision. For example converting 999 milliseconds to seconds results in 0. Conversions from coarser to finer granularities with arguments that would numerically overflow saturate to Long.MIN_VALUE if negative or Long.MAX_VALUE if positive.

For example, to convert 10 minutes to milliseconds, use: TimeUnit.MILLISECONDS.convert(10L, TimeUnit.MINUTES)

Parameters:
sourceDuration - the time duration in the given sourceUnit
sourceUnit - the unit of the sourceDuration argument
Returns:
the converted duration in this unit, or Long.MIN_VALUE if conversion would negatively overflow, or Long.MAX_VALUE if it would positively overflow.

sleep

public void sleep(long timeout)
            throws InterruptedException
Performs a Thread.sleep using this unit. This is a convenience method that converts time arguments into the form required by the Thread.sleep method.
Parameters:
timeout - the maximum time to sleep. If less than or equal to zero, do not sleep at all.
See Also:
java.lang.Thread.sleep

timedJoin

public void timedJoin(Thread thread,
                      long timeout)
            throws InterruptedException
Performs a timed Thread.join using this time unit. This is a convenience method that converts time arguments into the form required by the Thread.join method.
Parameters:
thread - the thread to wait for
timeout - the maximum time to wait. If less than or equal to zero, do not wait at all.
See Also:
java.lang.Thread.join(long, int)

timedWait

public void timedWait(Object obj,
                      long timeout)
            throws InterruptedException
Parameters:
obj - the object to wait on
timeout - the maximum time to wait. If less than or equal to zero, do not wait at all.
See Also:
java.lang.Object.wait(long, int)

toDays

public abstract long toDays(long duration)
Equivalent to DAYS.convert(duration, this).
Parameters:
duration - the duration
Returns:
the converted duration
Since:
1.6

toHours

public abstract long toHours(long duration)
Equivalent to HOURS.convert(duration, this).
Parameters:
duration - the duration
Returns:
the converted duration, or Long.MIN_VALUE if conversion would negatively overflow, or Long.MAX_VALUE if it would positively overflow.
Since:
1.6

toMicros

public abstract long toMicros(long duration)
Equivalent to MICROSECONDS.convert(duration, this).
Parameters:
duration - the duration
Returns:
the converted duration, or Long.MIN_VALUE if conversion would negatively overflow, or Long.MAX_VALUE if it would positively overflow.

toMillis

public abstract long toMillis(long duration)
Equivalent to MILLISECONDS.convert(duration, this).
Parameters:
duration - the duration
Returns:
the converted duration, or Long.MIN_VALUE if conversion would negatively overflow, or Long.MAX_VALUE if it would positively overflow.

toMinutes

public abstract long toMinutes(long duration)
Equivalent to MINUTES.convert(duration, this).
Parameters:
duration - the duration
Returns:
the converted duration, or Long.MIN_VALUE if conversion would negatively overflow, or Long.MAX_VALUE if it would positively overflow.
Since:
1.6

toNanos

public abstract long toNanos(long duration)
Equivalent to NANOSECONDS.convert(duration, this).
Parameters:
duration - the duration
Returns:
the converted duration, or Long.MIN_VALUE if conversion would negatively overflow, or Long.MAX_VALUE if it would positively overflow.

toSeconds

public abstract long toSeconds(long duration)
Equivalent to SECONDS.convert(duration, this).
Parameters:
duration - the duration
Returns:
the converted duration, or Long.MIN_VALUE if conversion would negatively overflow, or Long.MAX_VALUE if it would positively overflow.

toString

public String toString()

values

public static TimeUnit[] values()