java sleep 循环_java – Thread.sleep()在while循环中

我注意到NetBeans在我的Java代码中的while循环中警告我关于使用Thread.sleep(),所以我已经对此进行了一些研究。看起来,主要的问题是性能之一,当您的同步状态可能会在计数器仍然处于睡眠状态时成为现实,从而在等待下一次迭代时浪费挂钟时间。这一切都是完美的。

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

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编写的,所以在这种情况下将其更改为“合作”不是一个选择。我更新应用程序的状态值的唯一选择是创建和发送XML消息,接收响应,解析它,然后提取我需要的信息。

任何建议或意见将是最受欢迎的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值