1. 多线程的Wait返回它等待的下方。  Java Code 
package org.vocano.java.tst;          
class ThreadDemo {          
              public           static           void main(          String[] args) {          
        Buffer buf =           new Buffer();          
                  new Producer(buf).start();          
                  new Consumer(buf).start();          
                  new Consumer(buf).start();          
    }          
}          
class Producer           extends Thread {          
              private Buffer buf;          
              public Producer(Buffer buf) {          
                  this.buf = buf;          
    }          
              public           void run() {          
                  boolean odd = false;          
                  while(true) {          
                      synchronized(buf) {          
                System.out.println(          "Producer get lock!");          
                          if(buf.bFull) {          
                    System.out.println(          "Producer wait!!!");          
                              try{buf.wait();}          catch(Exception e) {}          
                    System.out.println(          "Producer wait return return return !!!!!!! ");          
                }          
                          if(odd) {          
                    buf.name=          "jack";              
                              try{Thread.sleep(          100);}          catch(Exception e) {}          
                    buf.sex=          "female";          
                }           else {          
                    buf.name=          "lucy";              
                              try{Thread.sleep(          100);}          catch(Exception e) {}          
                    buf.sex=          "male";          
                }          
                buf.bFull = true;          
                buf.notify();          
                System.out.println(          "Producer release lock!");          
            }          
            odd = !odd;          
        }          
    }          
}          
class Consumer           extends Thread {          
              private Buffer buf;          
              public Consumer(Buffer buf) {          
                  this.buf = buf;          
    }          
              public           void run() {          
                  while(true) {          
                      synchronized(buf) {          
                System.out.println(          "Consumer get lock!");          
                          if(!buf.bFull) {          
                    System.out.println(          "Consumer wait!!!");          
                              try{buf.wait();}          catch(Exception e) {}          
                    System.out.println(          "Consumer wait return return return !!!!!!! ");          
                }          
                          try{Thread.sleep(          500);}          catch(Exception e) {}          
                System.out.println(buf.name +           " : " + buf.sex);          
                buf.bFull = false;          
                buf.notify();          
                System.out.println(          "Consumer release lock!");          
            }          
        }          
    }          
}          
class Buffer {          
              boolean bFull = false;          
              String name =           "Unkown";          
              String sex =           "Unkown";          
}

  1. 输出:可看出Wait的返回时另一个的wait或者release,不是自己getLock,说明notify放回wait的点。  Java Code 
Producer get lock!          
Producer release lock!          
Consumer get lock!          
lucy : male          
Consumer release lock!          
Consumer get lock!          
Consumer wait!!!          
Producer get lock!          
Producer release lock!          
Producer get lock!          
Producer wait!!!          
Consumer wait           return           return           return !!!!!!!           
jack : female          
Consumer release lock!          
Producer wait           return           return           return !!!!!!!           
Producer release lock!          
Producer get lock!          
Producer wait!!!          
Consumer get lock!