lockObj.notifyAll(); 說是喚醒所有在lockObj對象上等待的線程,energyBoxes[from] < amount那么肯定會出現(xiàn)有些線程這個條件不滿足的啊,咋能喚醒全部線程呢?
lockObj.notifyAll(); 說是喚醒所有在lockObj對象上等待的線程,energyBoxes[from] < amount那么肯定會出現(xiàn)有些線程這個條件不滿足的啊,咋能喚醒全部線程呢?
lockObj.notifyAll(); 說是喚醒所有在lockObj對象上等待的線程,energyBoxes[from] < amount那么肯定會出現(xiàn)有些線程這個條件不滿足的啊,咋能喚醒全部線程呢?
2018-06-04
舉報
2022-03-25
偏執(zhí)吧。。。我覺得是前者,可以調(diào)用繼承的方法和自己特有的方法。后者,調(diào)用Animal的方法,若子類Dog重寫了父類Animal方法,則調(diào)用重寫的方法。
2020-06-09
喚醒線程之后 線程就會重新執(zhí)行一遍run語句塊中的方法 而運行的代碼中的“?while (energyBoxes[from] < amount)”代碼就可以起到判斷的作用 若不滿足條件則繼續(xù)等待
2020-05-13
wait()在條件不滿足時調(diào)用,然后會釋放掉鎖,進入wait set等待,讓其他的線程去競爭cpu資源,當其他的線程操作引起條件的變化時,則會notifyAll()喚醒所有在wait set中等待的線程,重新判斷條件是否滿足,滿足則獲取資源,不滿足繼續(xù)進入wait set等待
2019-04-24
沒錯,所有waitSet中的線程都會被喚醒,并且同一時刻只有一條線程競爭到CPU資源,
然后開始執(zhí)行transfer方法:如果還是不滿足if條件,繼續(xù)回去等待;滿足了就執(zhí)行transfer操作。
然后下一個線程剛被喚醒的線程繼續(xù)進入CPU。
2019-01-16
不滿足這個條件就不會wait(),所以就不需要喚醒啊
2018-11-28
喚醒所有線程,然后重新進行一次判斷,不滿足的再次進入阻塞
2018-09-26
我猜是,energyBoxes[from]<amount的線程在失去鎖進入wait set后,線程本身沒有停下來只是不能操作被鎖的內(nèi)存區(qū)域,但是線程能獲得新的amount(等于刷新自己的amount),也不知道對不對
2018-06-04
就像生產(chǎn)車間的庫存商品一樣,存貨不足時買家來進貨就只能進入等待,剛生產(chǎn)一件又有另外一個買家來進貨,又只能進入等待,直到收到通知有貨了買家才來買。這里的notifyAll就是通知了所有人