背景:我一直习惯将
问题:首先,这种方法是否可行,或者TimeUnit的休眠存在一些微妙的问题?其次,据我了解,这是在进行网络(或类似)操作重试前等待的最佳方式。
Thread.sleep()
函数转换为TimeUnit.XXX.sleep()
函数,每当我需要更改包含该函数的代码时都这样做。问题:首先,这种方法是否可行,或者TimeUnit的休眠存在一些微妙的问题?其次,据我了解,这是在进行网络(或类似)操作重试前等待的最佳方式。
for(int retriesLeft = 3; ;--retriesleft) {
try {
doOperation(...);
break;
} catch (IOException ex) {
if (retryCountDown <= 0) throw ex;
else TimeUnit.SECONDS.sleep(10);
}
}
< p > "TimeUnit.XXXX.sleep(10)" 是正确的休眠方式吗?还是有更好的方法?如果有更好的Java模式来处理整个网络操作重试逻辑,也请随意评论...< /p >