IllegalMonitorStateException
当我尝试创建对象的实例时,我得到了。代码如下所示:
public int signIn(parameters...)
{
...check some stuff...
new Thread(... just a simple log here...).start();//IllegalMonitorStateException
return result;
}
更多信息:
实际应用程序由 2 个通过 JNI 交互的程序(C++ 和 java)组成。我遇到异常的情况如下。
- c++ 程序要求 java 连接到服务器。(这是一个非阻塞操作)
- Java 程序通知 c++ 连接成功。(在一个新线程中,以便 java 可以继续执行其他任务)
- 当接收到连接成功时,c++程序要求java登录
- 出现异常。
我应该注意,这个异常只发生在这种特殊情况下,如果我在连接成功后的某个时间调用 login 一切正常。
我试过的:
- 一开始通知连接成功不是在新线程中,但是创建线程并没有解决问题。
- java登录代码有一些同步的东西,但删除它们并用一个简单的日志替换它仍然会产生问题。
编辑:
这是堆栈跟踪:
Phoenix.client.ClientAPI.NativeInterface.NativeAPIEventListener.onConnectingFinished(Native Method) Phoenix.client.ClientAPI.NativeInterface.NativeAPIEventListener.access$000(NativeAPIEventListener.java:12) Phoenix.client.ClientAPI.NativeInterface.NativeAPIEventListener$1.run(NativeAPIEventListener.java :30) java.lang.Thread.run(未知来源)