Как приостановить поток до тех пор, пока условие не станет истинным, без ожидания? Например, предположим, что я проверяю, есть ли
playerOne.isWalking ()
Будет правдой, и я хочу запустить некоторый код, когда он станет правдой. Снова предположим, что playerOne - это экземпляр класса Player, который затем имеет функцию isWalking (). У меня нет доступа к тому, что делает isWalking () истинным. Поэтому каждый раз, когда я хочу проверить, истинно ли isWalking (), я должен явно вызывать метод из экземпляра player.
Я пробовал использовать Wait / Notify в синхронизированных блоках, но это никогда не сработало, потому что мне пришлось бы вручную уведомлять поток о пробуждении, когда isWalking () становится истинным, и я не знаю, когда это станет истинным.
Я пробовал использовать шаблон наблюдателя, чтобы сделать Player подклассом наблюдаемого, чтобы я мог вызывать метод обновления, когда isWalking () становится истинным, но снова я не знаю, когда это произойдет.
Я даже пробовал использовать свойства, но это тоже не сработало.
Возможно ли это проверить без ожидания занятости? Постоянно опрашивать и вызывать эту функцию, чтобы убедиться, что она истинна, а затем, если она истинна, выполнить код.
Это было плохое решение, связанное с ожиданием занятости: