我現在面臨以下警告在NetBeans:Thread.sleep在循環中調用 - 在這種情況下如何防止它(通過重構)?
我知道這是一個常見的問題的人的臉,我發佈前閱讀一些相關的問題。但在這個特定的情況下 - 我在做一個exponential backoff使用Jsoup下載文件 - 我不知道如何防止警告。 我想到了隨着時間的推移計時器,但是......它是最優雅的方式嗎?
Document downloadPageAsDocument(String url) throws IOException {
long waitTime = MILLIS_PER_SECOND;
while (waitTime < MILLIS_PER_HOUR) {
try {
return Jsoup.connect(url).timeout(REQ_TIMEOUT_MILLISECONDS).get(); // an IOException is thrown on timeout by Jsoup
} catch (IOException ex) {
log.log(Level.WARNING, "{0}... wating {1} seconds", new Object[]{ex.getMessage(), (waitTime/MILLIS_PER_SECOND)});
try {
Thread.sleep(waitTime);
} catch (InterruptedException ex1) {
}
waitTime *= 2;
}
}
throw new IOException("I quited after " + (waitTime/MILLIS_PER_SECOND) + " seconds");
}
計時器是一種更優雅的方式。 –