Thread.sleep()没有暂停执行

时间:2016-05-24 00:32:37

标签: java multithreading vaadin sleep thread-sleep

我试图通过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应用程序中,我假设错误的线程正在进入睡眠状态,但我不确定如何针对特定线程进行睡眠。

提前致谢

1 个答案:

答案 0 :(得分:1)

你确定if中的代码正在运行吗? while上的条件不同(+ toLowerCase)。 Thread.sleep()总是导致当前线程进入休眠状态。