我试图通过20次尝试将每个循环休眠3000ms,将循环中的进程尝试限制为60秒。调用Thread.sleep()实际上并不暂停正在运行的线程中的执行,相反,所有20次尝试都会连续快速发生。
private void pollWebServiceForToken() {
final int pollInterval = 3000;
new Thread() {
@Override
public void run() {
int attempts = 0;
int maxAttempts = 60;
String token;
do {
token = requestToken(exchangeCode);
if (token.contains(FAILED)) {
try {
Thread.sleep(pollingInterval);
} catch (InterruptedException ex) {
this.currentThread().interrupt();
}
}
attempts++;
} while (token.toLowerCase().contains(FAILED) && attempts < maxAttempts && !cancelled);
}
}.start();
}
由于这一切都发生在Vaadin应用程序中,我假设错误的线程正在进入睡眠状态,但我不确定如何针对特定线程进行睡眠。
提前致谢
答案 0 :(得分:1)
你确定if中的代码正在运行吗? while上的条件不同(+ toLowerCase)。 Thread.sleep()
总是导致当前线程进入休眠状态。