在某些暂停之后重新运行java代码
我是个新手。我有一个向外部系统发布数据的场景。如果发布因任何错误而失败,我将根据返回状态知道该错误,我必须在一定时间后重试 我正计划用Thread.sleep来偿还这笔钱。使用它好吗?或者有更好的方法吗 任何帮助都将不胜感激 伪代码:-在某些暂停之后重新运行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
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为您的参考添加了伪代码此问题似乎与主题无关,因为它属于代码审阅。