...
When waiting upon a Condition, a "spurious wakeup" is permitted to occur, in general, as a concession to the underlying platform semantics. This has little practical impact on most application programs as a Condition should always be waited upon in a loop, testing the state predicate that is being waited for. An implementation is free to remove the possibility of spurious wakeups but it is recommended that applications programmers always assume that they can occur and so always wait in a loop.
Newer code must almost always use the java.util.concurrent
concurrency utilities as opposed to the wait/notify mechanism, however, legacy code may require use of these methods.
Noncompliant Code Example
...