wait() and notify()

daywalker發表於2003-09-27
有一段程式:
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()被呼叫,執行緒被阻塞,沒有繼續向下執行。不知道是什麼原因?
小弟初學, 還請多多關照

相關文章