synchronized (this) {
                try {
                    wait(10000);
                } catch (InterruptedException ex) {
                    Logger.getLogger(Th2.class.getName()).log(Level.SEVERE, null, ex);
                }
                 //其他操作
}问题:
我知道wait的时候,就放弃了对this的锁,问题是等时间过去后,这部分代码还需要获得this的锁才能运行吗?
或者wait()后面带很多程序,那么被notify之后,是否也需要获得这个锁才能运行?

解决方案 »

  1.   

    答:需要获得this的锁才能从wait的断点处继续运行.
      

  2.   

    即:wait语句的下一条语句继续运行.
      

  3.   

    答:类Object中void wait(long timeout)的中文API中已有说明.
      

  4.   

    一个线程A里,调用了wait方法,就阻塞在了那一点上,只有另外一个B线程,调用了A线程得notify,那么A线程就会从断点继续。wait放弃A得锁,notify恢复加锁。