1

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

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

在这个回调方法中,我尝试创建另一个 java 线程并在该线程上调用 start。然而,这个 java 线程永远不会运行。就像它从来不存在一样。

从 JNI 回调创建线程有问题吗?

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

4

1 回答 1

3

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

于 2012-04-25T08:57:16.437 回答