wait() and notify()
有一段程序:
public class WaitAndNotify extends Thread{
public synchronized void run(){
try{
wait();
}catch(InterruptedException e){
e.printStackTrace(System.err);
}
}
public static void main(String[] args){
WaitAndNotify wan=new WaitAndNotify();
wan.start();
synchronized(wan){ //1
wan.notify(); //1
} //1
}
}
按照我的想法程序应该按下面的顺序运行:
1 开始新的线程(wan.start())
2 线程在run()方法中被阻塞
3 因为是调用的wait()阻塞线程,所以wan对象上的锁应当被放弃,从而使//1的代码被执行,线程被唤醒,程序得以继续执行
可实际情况是:
wan.start()被调用,线程被阻塞,没有继续向下执行。不知道是什么原因?
小弟初学, 还请多多关照