为什么没有线程等待notify()?

Edd*_*ion 4 java concurrency notify wait

为什么没有线程等待notify()?线程启动然后进入等待池,但是在那之后它继续执行.

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();
       }
    }
 }
Run Code Online (Sandbox Code Playgroud)

Mar*_*nik 7

您正在同步线程对象本身,这是错误的用法.发生的事情是,垂死的执行线程总是调用notify它的Thread对象:Thread.join 依赖于此.因此很清楚为什么你notify在那里有和没有你自己的相同行为.

解决方案:使用单独的对象进行线程协调; 这是标准做法.