Thread.sleep() 没有暂停执行
Thread.sleep() isn't pausing execution
我试图通过在 20 次尝试中每个循环休眠 3,000 毫秒来将循环中进程的尝试限制为 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 应用程序内部,我假设错误的线程正在进入休眠状态,但我不确定如何针对特定线程进行休眠。
提前致谢
您确定 if 中的代码是 运行 吗? while 的条件不同 (+toLowerCase)。 Thread.sleep()
总是导致当前线程休眠。
我试图通过在 20 次尝试中每个循环休眠 3,000 毫秒来将循环中进程的尝试限制为 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 应用程序内部,我假设错误的线程正在进入休眠状态,但我不确定如何针对特定线程进行休眠。
提前致谢
您确定 if 中的代码是 运行 吗? while 的条件不同 (+toLowerCase)。 Thread.sleep()
总是导致当前线程休眠。