JNI回调线程

时间:2012-04-25 08:34:41

标签: java c java-native-interface

我有一些调用jni层的java代码。

JNI层是第三方,因此我无法对其进行检查,但在某些时候它会创建一个新线程并对java代码进行回调。

在这个回调方法中,我尝试创建另一个java线程并在线程上调用start。但是这个java线程永远不会运行。它就像从未存在过。

从JNI创建线程回拨问题吗?

我可以创建一个具有核心大小的threadpoolexecutor并将任务放在执行程序上,但我想知道为什么我不能在回调中创建线程。

1 个答案:

答案 0 :(得分:3)

在调用任何其他JNI方法之前,您需要在回调内部调用AttachCurrentThread(),并在退出之前调用DetachCurrentThread()