void Java_Package_Multithreading_againCallReadFile
(JNIEnv *env, jobject obj) {
if((*env)->MonitorEnter(env,obj) == JNI_OK) {
printf("Now you can call the synchronised method !");
} else {
printf("oops ! Failed to acquire the lock.");
}
}
从上面的方法我想检查我是否可以调用同步的方法并且可以被另一个线程使用。 MonitorEnter
实际检查什么。我已经阅读了它的文档,但不明白它是什么。我想要做的是,在检查调用该方法是否安全后调用该同步方法。上面的方法似乎不对,因为即使满足 if
语句,我也会得到一个 fatal error 。
"What i want to do is, call that synchronised method after checking if it is safe to call that method."
这没有任何意义。就叫它吧。如果该方法已经同步,则您不会添加任何值。调用“MonitorEnter”根本不会“检查调用该方法是否安全”。它要求锁定您提供的对象。
我是一名优秀的程序员,十分优秀!