Why doesn't thread wait for notify()?
concurrency, java, notify, wait
Solution
You are synchronizing on the thread object itself, which is wrong usage. What happens is that the dying thread-of-execution always calls `notify` on its `Thread` object: `Thread.join` relies on this. Therefore it is clear why you get the same behavior with and without your own `notify` in there.
Solution: use a separate object for thread coordination; this is the standard practice.
Problem
Why doesn't thread wait for `notify()`? The thread starts and then goes to the waiting pool, but it proceeds to execute after that moment. ``` public class JavaApplication2 { public static void main(String [] args) { ThreadB b = new ThreadB(); synchronized(b) { b.start(); try { System.out.println("1"); b.wait(); } catch (InterruptedException e) {} System.out.println("Total is: " + b.total); } } } class ThreadB extends Thread { int total; @Override public void run() { synchronized(this) { total += 1; //notify(); } } } ```