Every object, in addition to having an associated monitor, has an associated wait set. A wait set is a set of threads.
When an object is first created, its wait set is empty. Elementary actions that add threads to and remove threads from wait sets are atomic. Wait sets are manipulated solely through the methods
Wait set manipulations can also be affected by the interruption status of a thread, and by the
Thread class’s methods dealing with interruption. Additionally, the
Thread class’s methods for sleeping and joining other threads have properties derived from those of wait and notification actions.
Wait actions occur upon invocation of
wait(), or ...