title: Java thread state transition, WAITING to BLOCKED, or RUNNABLE?
body: <p>There seems to be a discrepancy between SO consensus and nearly every Java thread state diagram on the Internet; specifically, regarding thread state transition <em>from</em> <code>WAITING</code> after <code>notify()</code> or <code>notifyAll()</code> is invoked...</p>
  <ul>
  <li><em>WAITING <a href="https://stackoverflow.com/a/13664082/791406">never</a> goes directly to RUNNABLE</em></li>
  <li><em>The thread is WAITING until it is notified...Then it <a href="https://stackoverflow.com/a/2534158/791406">becomes</a> BLOCKED...</em></li>
  <li><em>Once this thread is notified, it <a href="https://stackoverflow.com/a/15680579/791406">will not be runnable</a>...This is..Blocked State.</em></li>
  </ul>
  <p>So the concensus on SO is: a thread transitions from <code>WAITING</code> to <code>BLOCKED</code> after invoking <code>notify()</code> or <code>notifyAll()</code>; diagram below illustrates this transition in green.</p>
  <h3>Question</h3>
  <p>Why do most <a href="https://www.google.com/search?q=java%20thread%20state%20diagram&amp;ie=utf-8&amp;oe=utf-8" rel="noreferrer">state diagrams on the web</a> illustrate the transition from <code>WAITING</code> to <code>RUNNABLE</code>, not <code>BLOCKED</code>? Depiction in red shows the incorrect transition; am I missing something?</p>
  <p><img src="https://i.stack.imgur.com/XtQm4.png" alt="enter image description here" /></p>