【发布时间】:2014-12-17 12:46:49
【问题描述】:
我创建了一个 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 线程的创建?
【问题讨论】:
标签: java multithreading dll java-native-interface