问题有点多嘿嘿1:wait和notify必须成对吗?2:线程a,b访问同一个对象obj的synchronized的m1();线程c,d访问这个obj的synchronized的m2();不考虑实现条件。假如这时候a,b,c都wait,d一个notifyall会唤醒a,b,c吗,这个c能唤醒吗?3:执行wait方法的线程是在操作系统线程运行图里是处于什么状态?阻塞?还是啥?还是放到一个队列里让其他notify?

解决方案 »

  1.   

    1:wait和notify必须成对吗?
    ——显然不是,可以1个wait多个notify,也可能反之。2:线程a,b访问同一个对象obj的synchronized的m1();线程c,d访问这个obj的synchronized的m2();不考虑实现条件。假如这时候a,b,c都wait,d一个notifyall会唤醒a,b,c吗,这个c能唤醒吗?
    ——可以,只要大家wait的对象都是同一个,这里有个例子你可以参考:
      http://blog.csdn.net/ldh911/article/details/72688793:执行wait方法的线程是在操作系统线程运行图里是处于什么状态?阻塞?还是啥?还是放到一个队列里让其他notify?
    ——wait也是阻塞。