【发布时间】:2013-03-01 07:38:50
【问题描述】:
我对多线程环境下的 JNI 实现感到困惑。我有一个如下的 java 类,代表本机接口:
public class Test {
public native int doSum(int a, int b);
}
并且对应的native方法是在c中实现的。
现在,我的问题是,我有多个线程,比如 5 个。所有线程都在使用上述 Test 类的一个全局实例。那么,用 C 编写的本地方法代码是否可能是线程安全的?或者我是否需要像问题中提到的那样使其线程安全?
如果我为每个线程创建单独的 Test 类实例,然后调用本机函数呢?这会表现出线程安全吗?
谢谢。
【问题讨论】:
-
不知道方法的实现我们是无法判断的。如果实现是线程安全的,则不需要同步。如果它不是线程安全的,则同步可以使其成为线程安全的。这完全取决于方法的代码。
标签: java c++ multithreading android-ndk java-native-interface