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

synchronized wait notify
thread1先synchronized   一个object,再调用object的wait方法。但有哪个线程能调用object的notify方法呢?如果它能调用的话,它肯定是有该oject的监视器的,但这个监视器已经被thread1得到了。所以,这样看来,thread1似乎不能被唤醒了。

------解决方案--------------------
thread1调用了wait的时候就释放了锁,这时如果有别的线程就可以获取object的锁并调用notify唤醒thread1
------解决方案--------------------
wait方法不会占用锁。
synchronized(lock){
doSomething1...
lock.wait();
doSomething2...
}
doSomething1和doSomething2是在lock上synchronized的,但wait动作时这个synchronized已经被释放了