Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: condition predicate

The Object.wait() method is used to temporarily cede possession of a lock so that another requesting thread can proceed. It must always be used inside a synchronized block or method. To resume activity, the requesting thread must notify the waiting thread. Moreover, the wait() method should be invoked in a loop that checks if a condition predicate holds.

The invocation of notify() or notifyAll() in another thread cannot precisely determine which waiting thread must be resumed. A condition predicate statement is used so that the correct thread resumes when it receives a notification. A condition predicate also helps when a thread is required to block until a condition becomes true, for instance, when it cannot proceed without obtaining some data from an input stream.

...

Code Block
bgColor#ccccff
// ConditionThe condition predicate is guarded byguards a lock on the shared object/variable
synchronized (object) {
  while (<condition does not hold>) {
    object.wait(); 
  }

  // Proceed when condition holds
}

...