[英]Java app does not start a thread when called from C (JNI) DLL
我创建了一个其中启动线程的Java库。
当使用普通的java-main方法测试该库并调用该库时,所讨论的线程就可以正常启动。
但是现在我想通过JNI从C dll调用此库。
1)因此,C dll通过JNI调用库方法foo
2) foo
创建一个Java线程,并呼吁start
就可以了
3) foo
返回到C dll调用程序。
4)Java线程现在开始
问题是,我得到一个Future
从螺纹回来,我呼吁get
它。
从C dll调用Java代码时,此操作get
永远阻塞,但从另一个Java应用程序调用时,此方法会正常工作。
使用JNI,所有其他代码也可以正常运行。
任何想法如何发生?
dll或JNI是否以某种方式阻止了Java线程的创建?
如果有人遇到类似的问题:
问题是我创建了对该dll的本地回调。
从创建的线程中调用此回调,并且不允许在本机代码上进行多线程处理。
删除线程对本机代码的所有调用即可解决此问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.