java - Thread.sleep() 没有暂停执行

标签 java multithreading vaadin sleep thread-sleep

我试图通过在 20 次尝试中每个循环 hibernate 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 应用程序内部,我假设错误的线程正在进入 hibernate 状态,但我不确定如何针对特定线程进行 hibernate 。

提前致谢

最佳答案

您确定 if 中的代码正在运行吗? while 的条件不同 (+toLowerCase)。 Thread.sleep() 总是导致当前线程 hibernate 。

关于java - Thread.sleep() 没有暂停执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37402656/

相关文章:

Maven gwt :compile forks to a different Xmx

java - Titan Cassandra 多线程事务锁定

java - 减少 Vaadin Charts 2 中图表内的空白

java - 如何从单独的类文件中随机选择两个枚举值

java - 如何为JDialog设置GIF背景?

java - 从 MyBatis 3/Java 上的缓存中反序列化对象时出现问题

java - Servlet 映射限制图像可见

c# - 在 BackgroundWorker 处理程序中使用参数

multithreading - 共识值(value)

嵌入 tomcat8 的 VAADIN 推送不可用