如何暫停一個線程,直到一個條件變爲true而不需要等待? 例如,假設我檢查,看看你如何暫停一個線程,直到一個條件成真而不需要等待?
playerOne.isWalking()
是否會是真的,我想運行一些代碼,當它成爲現實。再次假設playerOne是類Player的一個實例,然後它具有函數isWalking()。我無法訪問使isWalking()成爲現實的原因。因此,每次我想檢查isWalking()是否爲true時,我都必須明確地從播放器實例調用該方法。
我試過在同步塊中使用Wait/Notify,但那樣做永遠不會工作,因爲我將不得不手動通知線程以喚醒isWalking()變爲true時,我不知道它何時會變成真正。
我試過使用觀察者模式使Player成爲observable的一個子類,這樣我可以在isWalking()變爲true時調用更新方法,但我不知道何時會發生。
我甚至嘗試過使用Propertys,但那也行不通。
這甚至可以檢查沒有忙等待嗎?不斷輪詢並調用該函數以查看它是否爲真,那麼如果它是真的,則執行代碼。
這是一個糟糕的解決辦法,我提出涉及忙等待:
歡迎來到Stack Overflow!請參考[遊覽](http://stackoverflow.com/tour),環顧四周,閱讀[幫助中心](http://stackoverflow.com/help),特別是[我該如何問一個好問題?](http://stackoverflow.com/help/how-to-ask)和[我可以問什麼問題?](http://stackoverflow.com/help/on-topic)。 –