Eri*_*ors 9 java java-native-interface synchronized
我有一个java类,它有一些(私有静态)同步方法,我想从本机代码调用.通过一些示例代码,我的意思变得更加清晰
public class SomeClass {
private static synchronized void method() {
//do something that needs synchronization
}
}
Run Code Online (Sandbox Code Playgroud)
和相关的本机代码(C++)
void someFunction(JNIEnv * env) {
jclass someClass = env->findClass("SomeClass");
jmethodID methodId = env->GetStaticMethodID(jclass, "method", "()V");
env->MonitorEnter(jclass); // <--- IS THIS NEEDED/ALLOWED
env->CallStaticVoidMethod(jclass, methodId);
env->MonitorExit(jclass); // <--- IS THIS NEEDED/ALLOWED
}
Run Code Online (Sandbox Code Playgroud)
所以我想知道的是,我是否需要调用MonitorEnter/MonitorExit,或者是否已经通过SomeClass.method()上的synchronized属性强制执行方法同步.我对重写代码并不感兴趣.我可以想到一些解决方案来解决这个问题,但我感兴趣的是行为是什么,给定一个从本机代码调用的同步方法.
| 归档时间: |
|
| 查看次数: |
3630 次 |
| 最近记录: |