android - JNI 和多线程

标签 android java-native-interface

我有一个使用共享 C 库的多线程 JAVA 应用程序。如果我从不同的线程访问这个库,它会发生什么?

谢谢, 那鸿书

最佳答案

这完全取决于 C 库。如果该函数不存储任何状态(例如,只计算一些结果并且只使用堆栈上的局部变量),那么从多个线程使用它是安全的。否则,您必须注意为每个线程单独存储状态,例如通过使用 malloc 并返回句柄以供进一步调用,以便后续调用将重用 malloced 内存块中的状态。

如果我不了解代码的内部结构,我更喜欢构建一个小型 C 应用程序并使用 Runtime.exec 调用它,但这只有在 C 函数完成足够的工作以证明 exec 开销合理时才有用。

关于android - JNI 和多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5898034/

相关文章:

java - 显示方法不正常

Android:当 Dalvik 杀死此 Activity 时,不会调用 Activity.onDestroy()

android - 从其他 jni 库调用 jni 方法

DLL 的 JAVA 库路径 INPUT/OUTPUT

android - Android OpenCV 中传出字节 [] 需要 cv::imencode 吗?

android - 以编程方式在 TextView 下画线

android - 删除 ArrayList 上的元素会在 ArrayAdapter 上抛出 IndexOutOfBoundsException

java - 如何将 OnClickListener 设置为 Expandable RecycleView

java - 在linux-Fedora core上编译JNI程序?

java - JNI 库在垃圾回收时释放内存?