com.unboundid.util
Class WakeableSleeper

java.lang.Object
  extended by com.unboundid.util.WakeableSleeper
All Implemented Interfaces:
java.io.Serializable

public final class WakeableSleeper
extends java.lang.Object
implements java.io.Serializable

This class provides a utility that can be used to sleep for a specified period of time in a manner that allows it to be woken up if necessary. A single instance of this class may only be used to allow one thread to sleep at any given time, so if multiple threads need to sleep at the same time then a separate WakeableSleeper instance should be used for each.

See Also:
Serialized Form

Constructor Summary
WakeableSleeper()
          Creates a new instance of this wakeable sleeper.
 
Method Summary
 boolean isShutDown()
          Return true if this WakeableSleeper instance has been shutdown via the shutDown() method and false otherwise.
 void shutDown()
          Permanently shuts down this WakeableSleeper instance.
 boolean sleep(long time)
          Attempts to sleep for the specified length of time in milliseconds, subject to the accuracy available within the JVM and underlying system.
 void wakeup()
          Indicates that the sleeper should wake up if it is currently sleeping.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

WakeableSleeper

public WakeableSleeper()
Creates a new instance of this wakeable sleeper.

Method Detail

isShutDown

public boolean isShutDown()
Return true if this WakeableSleeper instance has been shutdown via the shutDown() method and false otherwise.

Returns:
true if this WakeableSleeper instance has been shutdown via the shutDown() method and false otherwise.

sleep

public boolean sleep(long time)
Attempts to sleep for the specified length of time in milliseconds, subject to the accuracy available within the JVM and underlying system. It may wake up prematurely if the wakeup method is called, or if the thread is interrupted. If shutDown() is called, then any active caller of this method will return immediately, and subsequent calls will return without sleeping.

This method must not be called on the same WakeableSleeper instance by multiple threads at the same time.

Parameters:
time - The length of time in milliseconds to sleep.
Returns:
true if the sleep completed, or false if it was woken or interrupted prematurely.

shutDown

public void shutDown()
Permanently shuts down this WakeableSleeper instance. If a thread is currently blocked in the sleep method, it will return immediately, and all subsequent calls to that method will return without sleeping. It is safe to call this method multiple times.


wakeup

public void wakeup()
Indicates that the sleeper should wake up if it is currently sleeping. This method will not make any attempt to ensure that the thread had woken up before returning. If multiple threads attempt to wake up the sleeper at the same time, then it will have the same effect as a single wakeup request.