java - 尝试进入同步块(synchronized block)时出现 IllegalStateException

标签 java concurrency

进入同步块(synchronized block)时抛出IllegalStateException是什么意思?我有时会在线程的运行方法中看到这种情况:

    public void run() {
        while (true) {
            int n = 0;
            synchronized (service) { // IllegalStateException
                n = processPendingRequests();
            }

            /*
             * If n > 0, we processed at least one element, in which case we
             * immediately check the queue again until it was empty.
             */
            if (n == 0) {
                sleep();
                continue;
            }
        }
    }

service 对象会导致 IllegalStateException 吗?怎么办?

最佳答案

根据Java Language Specification ,“synchronized”语句不会抛出“IllegalStateException”。因此,据我所知,要么语言规范是错误的,要么您使用了不合格的 JVM,要么您误解了程序的行为。

关于java - 尝试进入同步块(synchronized block)时出现 IllegalStateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2297496/

相关文章:

java - 为什么当我发送两个输入流时 Spark Streaming 停止工作?

firebase - 更新 firestore 上的计数器时,firestore 事务和 FieldValue.increment 之间的区别

java - Java中的Peterson算法?

java - 如何在多线程环境下处理JPA OneToMany关系

java - ImageView 未出现在抽屉导航中的 ListView 下方

java - Keycloak 桌面应用程序重定向显示“我们很抱歉”

java - 带有自定义按钮的 ImageAdapter

java - java servlet 出现 404 错误。看不到 html 文件

file - 在 MATLAB 中以原子方式创建文件锁(文件互斥锁)

c# - 在 IDisposable 派生类中应该在哪里释放单例互斥量?