在某些暂停之后重新运行java代码

在某些暂停之后重新运行java代码,java,multithreading,Java,Multithreading,我是个新手。我有一个向外部系统发布数据的场景。如果发布因任何错误而失败,我将根据返回状态知道该错误,我必须在一定时间后重试 我正计划用Thread.sleep来偿还这笔钱。使用它好吗?或者有更好的方法吗 任何帮助都将不胜感激 伪代码:- public void publish() throws InterruptedException { int status=1; for ( int i=0;i<3 i++) { status= //java code to publish

我是个新手。我有一个向外部系统发布数据的场景。如果发布因任何错误而失败,我将根据返回状态知道该错误,我必须在一定时间后重试

我正计划用Thread.sleep来偿还这笔钱。使用它好吗?或者有更好的方法吗

任何帮助都将不胜感激

伪代码:-

public void publish()  throws InterruptedException {
int status=1;

for ( int i=0;i<3 i++)
 {
   status= //java code to publish external system;

      if( status ==0 ) //0 means success
        {
         break;
        }
      else
      {
      Thread.sleep(4000);
       }
  }
}

首先,您的示例仍然是单线程的,当您睡眠时,该线程将暂停,您似乎知道这一点。然而,作为所描述问题的解决方案,使用Thread.sleep和不断增长的BackofInterval进行重试循环听起来是一种合理的方法

long backoffInterval = 1000; // <-- 1000 milliseconds
while (true) {
    if (sendMessage()) { // <-- did the message send complete?
        break; // <-- stop if it did.
    }
    try {
        Thread.sleep(backoffInterval); // <-- sleep
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    backoffInterval += 1000; // <-- increase the backoffInterval.
}

代码在哪里,您尝试了什么???您的主线程应该等待加入正在推送数据的线程并获得返回状态。用户线程。join@BhavikAmbani为您的参考添加了伪代码此问题似乎与主题无关,因为它属于代码审阅。