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() 总是导致当前线程休眠。