本帖最后由 lg_asus 于 2010-08-08 20:59:55 编辑

解决方案 »

  1.   

    notify是通知那些wait的线程,唤醒它们进入就绪状态
    而不是让wait的线程立马占有锁
      

  2.   

    有一台电脑但是N个人抢着玩,假设有一个人抢到了电脑sleep就是那人玩上了电脑然后趴电脑上自己不玩让别人也不能玩
    wait就是玩上了电脑也让你把电脑交出来,自己去旁凉快去。
    notify就是让那些去凉快的人,凉快够了,该继续抢电脑了....
      

  3.   

    to All:
    可是從運行結果來看,addWork()  getWork()交替執行,大家在addWork()  getWork()里加上打印語句就看出來了。
    既然notify()只是把線程喚醒,并不一定獲得對象鎖,可運行結果是已經獲得鎖了。由於addWork()  getWork()這兩個方法都synchronized,如果獲得不了queue鎖的話,是不可以執行的。大家再幫幫忙~~~多謝
      

  4.   


    synchronized(obj){ //在这里必须有obj的锁,才能进入同步块
       obj.wait();  //当执行wait后,在wait方法里面obj锁是释放掉了的
    }