thread communication involving conditions is the relationship between a producer thread and a consumer thread.
a condition queue is a data structure that stores threads waiting for a condition to exist. the waiting threads are known as the wait set
IllegalMonitorStateException
a spurious wakeup is a thread waking up without being notified , interrupted, or timing out.