如何等待 x 秒或直到条件变为真?在等待期间应定期测试条件。目前我正在使用这段代码,但应该有一个简短的功能。
for (int i = 10; i > 0 && !condition(); i--) {
Thread.sleep(1000);
}
原文由 user3561614 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何等待 x 秒或直到条件变为真?在等待期间应定期测试条件。目前我正在使用这段代码,但应该有一个简短的功能。
for (int i = 10; i > 0 && !condition(); i--) {
Thread.sleep(1000);
}
原文由 user3561614 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答1.5k 阅读✓ 已解决
4 回答1.3k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
2 回答745 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.7k 阅读
2 回答1.3k 阅读
假设您想要您所要求的,而不是重新设计代码的建议,您应该查看 Awaitility 。
例如,如果您想查看一个文件是否会在接下来的 10 秒内创建,您可以执行以下操作:
它主要针对测试,但执行特定请求的技巧,即等待调用者指定的任意条件,而无需显式同步或睡眠调用。如果您不想使用该库,只需阅读代码以了解它的工作方式。
在这种情况下,归结为与问题类似的轮询循环,但使用 Java 8 lambda 作为参数传递,而不是内联条件。