首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >while循环中的Thread.sleep()

while循环中的Thread.sleep()
EN

Stack Overflow用户
提问于 2012-01-10 01:46:54
回答 3查看 34K关注 0票数 24

我注意到NetBeans警告我不要在Java代码中的while循环中使用Thread.sleep(),所以我对这个主题做了一些研究。这似乎主要是一个性能问题,当计数器仍处于睡眠状态时,您的while条件可能会变为真,从而在您等待下一次迭代时浪费时钟时间。这一切都很有意义。

我的应用程序需要联系远程系统并定期轮询操作的状态,等待操作完成后再发送下一个请求。目前,代码在逻辑上是这样做的:

代码语言:javascript
复制
String state = get state via RPC call
while (!state.equals("complete")) {
    Thread.sleep(10000); // Wait 10 seconds
    state = {update state via RPC call}
}

假设环境正在检查远程操作(这是一个比较昂贵的进程,因为它会运行几秒钟),那么在while循环中使用Thread.sleep()是否有效?有没有更好的方法来构建这个逻辑?我见过一些可以使用Timer类的例子,但我看不出它的好处,因为它似乎仍然归结为上面相同的简单逻辑,但增加了更多的复杂性。

请记住,在这种情况下,远程系统既不在我的直接控制之下,也不是用Java编写的,因此在这种情况下,将其更改为更“协作”是不可取的。更新应用程序的state值的惟一选择是创建并发送一条XML消息,接收响应,解析它,然后提取所需的信息。

任何建议或意见都是非常受欢迎的。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8792786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档