代码之家  ›  专栏  ›  技术社区  ›  JesperE

尝试进入同步块时发生IllegalstateException

  •  1
  • JesperE  · 技术社区  · 15 年前

    当进入同步块时引发IllegalstateException是什么意思?我有时会在线程的run方法中看到:

        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 ?怎么用?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Steve Emmerson    15 年前

    根据 Java Language Specification “synchronized”语句不会引发“illegalStateException”。因此,无论是语言规范错误,还是使用了不一致的JVM,或者您误解了程序的行为——据我所见。