背景: 私は習慣的に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);
}
}
TimeUnit.XXXX.sleep(10)
上で寝る正しい方法はありますか、それとももっと良い方法はありますか? また、ネットワーク操作全体の再試行ロジックを処理するためのより良い Java パターンがある場合は、お気軽にコメントしてください...