繁体   English   中英

从C(JNI)DLL调用时,Java应用程序不会启动线程

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM