日期:2014-05-20  浏览次数:20665 次

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能唤醒吗?

3:执行wait方法的线程是在操作系统线程运行图里是处于什么状态?阻塞?还是啥?还是放到一个队列里让其他notify?

------解决方案--------------------
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/7268879

3:执行wait方法的线程是在操作系统线程运行图里是处于什么状态?阻塞?还是啥?还是放到一个队列里让其他notify?
——wait也是阻塞。